Hadoop 2.5.2 安装
来源:互联网 发布:阿里云建ss 编辑:程序博客网 时间:2024/06/05 06:54
安装环境准备:
1、JDK版本支持
Hadoop 2.7 以后的版本需要 Java 7 支持 Hadoop 2.6 以前支持 Java 6
JDK 测试结果
JDK 安装(rpm 方式):
rpm -ivh jdk-7u79-linux-x64.rpm
配置环境变量
在 ~/.bash_profile 中追加export JAVA_HOME=/usr/java/jdk1.7.0_79export PATH=$PATH:$JAVA_HOME/bin
执行 source ~/.bash_profile 命令
2、能进行 ssh 远程连接,安装 rsync 文件同步工具
下载安装包
http://mirrors.cnnic.cn/apache/hadoop/common/
Hadoop安装准备工作
1、解压安装包到安装目录
[root@localhost ~]# cd /usr/local/hadoop[root@localhost hadoop]# lshadoop-2.5.2-src.tar.gz[root@localhost hadoop]# tar -zxvf hadoop-2.5.2.tar.gz
2、hadoop 环境变量配置
在 ~/.bash_profile 中追加
export HADOOP_HOME=/usr/local/hadoop/hadoop-2.5.2export PATH=$PATH:$HADOOP_HOME/bin
执行 source ~/.bash_profile 命令
3 、编辑目录下 etc/hadoop/hadoop-env.sh 文件,增加如下配置
# set to the root of your Java installationexport JAVA_HOME=/usr/java/latest # Assuming your installation directory is /usr/local/hadoop/hadoop-2.5.2 export HADOOP_PREFIX=/usr/local/hadoop/hadoop-2.5.2
Hadoop路径一定要正确,否则会报 Error: Could not find or load main class org.apache.hadoop.util.RunJar
单节点安装方式
Hadoop 默认是无分布式模式,如同一Java进程,这对于调试很有用。
下面的例子用来测试在文档中根据正则表达式匹配进行搜索,并将结果输出到指定目录。
$ mkdir input $ cp etc/hadoop/*.xml input/ $ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.2.jar grep input output 'dfs[a-z.]+' $ cat output/* 注意:output目录不能先创建,否则会报错。
伪分布式安装
Hadoop也可以在单个节点进行伪分布式安装,相当于每个Hadoop后台程序运行在单独的Java进程中。
1、文件配置:
etc/hadoop/core-site.xml:
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property></configuration>
etc/hadoop/hdfs-site.xml:
<configuration> <property> <name>dfs.replication</name> <value>1</value> </property></configuration>
2、设置ssh免密码登陆
检查是否能ssh免密码连接本地: $ ssh localhost
如果不能,执行下面命令:
$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa 生成一对公钥和密钥$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys 将公钥添加到认证文件中
3、本地运行 MapReduce job,如果想在Yarn中运行 job,可查看 Yarn 在单节点的安装
3.1 格式化文件系统
$ bin/hdfs namenode -format
3.2 启动 NameNode 和 DataNode 程序
$ sbin/start-dfs.shhadoop 的日志写入 $HADOOP_LOG_DIR目录(默认是 $HADOOP_HOME/logs目录)
3.3 通过浏览器访问 NameNode,默认访问地址: http://localhost:50070/
注意:这种访问方式,需设置本机Windows的 hosts 文件,并将Linux的防火墙关闭或进行设置
3.4 创建执行 MapReduce 任务所需的目录
$ bin/hdfs dfs -mkdir /user$ bin/hdfs dfs -mkdir /user/<username>
若本机是64位系统则会产生警告:
WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
进入 http://dl.bintray.com/sequenceiq/sequenceiq-bin/ 网址,查看是否有对应版本的文件
下载完文件,将其解压到hadoop的 lib/native 目录下,覆盖原有文件即可
$ tar -zxvf hadoop-native-64-2.5.2.tar -C lib/native/
3.5 复制文件进入分布式文件系统
$ bin/hdfs dfs -put etc/hadoop input
3.6 再次运行测试用例
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.2.jar grep input output 'dfs[a-z.]+'
3.7 查看运行结果
复制文件进行查看 $ bin/hdfs dfs -get output output $ cat output/*或者直接查看 $ bin/hdfs dfs -cat output/*
3.8 完成后可停止hdfs进程
$ sbin/stop-dfs.sh
4、Yarn 单节点安装
通过少量配置就可以在伪分布式下,通过Yarn运行MapReduce任务,另外还需要运行 ResourceManager 和 NodeManager 后台程序
重命名文件
mv etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml
etc/hadoop/mapred-site.xml:
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property></configuration>
etc/hadoop/yarn-site.xml:
<configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property></configuration>
4.2 启动 ResourceManager 和 NodeManager 后台程序
$ sbin/start-yarn.sh
4.3 通过浏览器查看 ResourceManager 界面,默认访问地址:http://localhost:8088/
4.4 运行 MapReduce 任务
4.5 完成后,可关闭后台程序
$ sbin/stop-yarn.sh
HDFS 高可用集群
注意: 以下安装均是重新安装,对于已进行伪分布式安装的,请删除已安装的hadoop。
1、安排好集群节点的部署
2、考虑开启几个节点,各节点上部署安排
3、每个节点的hosts中配置所有节点的IP和名称
4、所有节点打通SSH,设置免密码登陆
在每个节点上
执行 ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa 生成一对公钥和密钥
这里选择node01节点,将所有节点公钥均添加到该节点认证文件中
使用命令方式将公钥追加到node01节点node01节点: $ ssh-copy-id -i ~/.ssh/id_dsa.pub localhostnode02节点: $ ssh-copy-id -i ~/.ssh/id_dsa.pub root@node01 node03节点: $ ssh-copy-id -i ~/.ssh/id_dsa.pub root@node01 .....
最后将node01节点认证文件到其它节点
$ scp ~/.ssh/authorized_keys root@node02:~/.ssh/ $ scp ~/.ssh/authorized_keys root@node03:~/.ssh/ .....
5、所有节点均安装 Hadoop,并进行Hadoop安装准备工作,并使用单节点方式测试。
修改Hadoop配置
hdfs-site.xml
命名服务的逻辑名称,将会作为HDFS集群中路径的绝对组成部分<property> <name>dfs.nameservices</name> <value>mycluster</value></property>每个NameNode在命名服务中唯一标识<property> <name>dfs.ha.namenodes.mycluster</name> <value>nn1,nn2</value></property>监听每个NameNode的RPC地址<property> <name>dfs.namenode.rpc-address.mycluster.nn1</name> <value>machine1.example.com:8020</value></property><property> <name>dfs.namenode.rpc-address.mycluster.nn2</name> <value>machine2.example.com:8020</value></property>machine.example.com 可填该NameNode主机的 host 地址监听每个NameNode的HTTP地址<property> <name>dfs.namenode.http-address.mycluster.nn1</name> <value>machine1.example.com:50070</value> </property> <property> <name>dfs.namenode.http-address.mycluster.nn2</name> <value>machine2.example.com:50070</value> </property>NameNode读写edits文件的 JournalNodes URI地址<property> <name>dfs.namenode.shared.edits.dir</name> <value>qjournal://node01:8485;node020:8485;node030:8485/mycluster</value></property>HDFS客户端 联系活跃NameNode节点的Java类<property> <name>dfs.client.failover.proxy.provider.mycluster</name> <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value></property>在故障转移中保护活动NameNode节点的脚本或Java类<property> <name>dfs.ha.fencing.methods</name> <value>sshfence</value></property>sshfence SSH到活动NameNode节点并关掉其进程SSH私钥文件的路径<property> <name>dfs.ha.fencing.ssh.private-key-files</name> <value>/home/exampleuser/.ssh/id_dsa</value></property>上面生成的私钥文件路径 /root/.ssh/id_dsajournalnode 存储edits文件的本地路径<property> <name>dfs.journalnode.edits.dir</name> <value>/path/to/journal/node/local/data</value></property>如 /opt/hadoop/journal/data 目录是否启用自动故障转移<property> <name>dfs.ha.automatic-failover.enabled</name> <value>true</value></property>
core-site.xml
Hadoop FS 客户端默认路径前缀,最好使用命名服务的逻辑名<property> <name>fs.defaultFS</name> <value>hdfs://mycluster</value></property>Hadoop其他临时目录的基础,NameNode命名文件会保存在其中<property> <name>hadoop.tmp.dir</name> <value>/tmp/hadoop-${user.name}</value> </property>也可自定义 /opt/hadoop/tempzookeeper 集群列表<property> <name>ha.zookeeper.quorum</name> <value>zk1:2181,zk2:2181,zk3:2181</value></property>以上配置文件所有节点均相同
相应节点上安装配置Zookeeper
1、这里选用 3.4.6 版本,安装位置为 /usr/local/zookeeper2、将conf/zoo_sample.cfg重命名为zoo.cfg,编辑zoo.cfg文件: a. 修改dataDir=/usr/local/zookeeper b. server.1=zk1.example.com:2888:3888 server.2=zk2.example.com:2888:3888 server.3=zk3.example.com:2888:38883、分别在每台机器下面的dataDir目录中创建一个myid的文件, 文件内容分别为:1,2,3
配置hadoop中的DataNode节点
$ vi etc/hadoop/slaves加入所有DataNode节点
启动所有zookeeper
$ bin/zkServer.sh start
查看ZK是否启动正确
$ bin/zkServer.sh status 如果有一个leader和多个flower,则说明启动正确
启动三个JournalNode
$ sbin/hadoop-daemon.sh start journalnode
在其中一个NameNode上格式化
$ hdfs namenode -format格式化提示时,请输入 Y 即可
注意:关闭防火墙或进行设置,不然会报连接错误
service iptables stop chkconfig iptables off
启动刚格式化的namenode
$ sbin/hadoop-daemon.sh start namenode
格式化第二个namenode,不然会无法启动该NameNode
将第一个NameNode格式化后的元数据拷贝到第二个namenode上
在第二个namenode上执行: $ hdfs namenode -bootstrapStandby该操作会自动创建相应 hadoop.tmp.dir 目录执行过程中可能会提示是否格式化,输入 Y 就可以同步并覆盖之前文件
启动第二个namenode
$ sbin/hadoop-daemon.sh start namenode
选择其中一个zkfc节点初始化ZKFC
$ hdfs zkfc -formatZK
在其中一个节点上执行
$ sbin/stop-dfs.sh
手动启动所有 jqurnalnode
$ sbin/hadoop.daemon.sh start journalnode
在其中一个节点上执行
$ sbin/start-dfs.sh
使用 jps 命令查看,如果出现有节点没有起来,删除所有节点hadoop.tmp.dir中文件,重新格式化
保证节点时间一致
测试:
1、通过网页访问NameNode
2、通过 Utilities/Browse the file system 访问 hdfs
3、测试 zookeeper 是否能接管
关闭 node02 namenode $ sbin/hadoop-daemon.sh stop namenode
若不能自动切换,查看zkfc和NameNode日志
4、运行伪分布式下的MapReduce测试程序
查看运行结果
[root@node02 hadoop-2.5.2]# bin/hdfs dfs -cat output/*6 dfs.audit.logger4 dfs.class3 dfs.server.namenode.2 dfs.audit.log.maxfilesize2 dfs.period2 dfs.namenode.rpc2 dfs.namenode.http2 dfs.audit.log.maxbackupindex1 dfsmetrics.log1 dfsadmin1 dfs.servers1 dfs.server.namenode.ha.1 dfs.nameservices1 dfs.namenode.shared.edits.dir1 dfs.ha.namenodes.mycluster1 dfs.ha.fencing.ssh.private1 dfs.ha.fencing.methods1 dfs.ha.automatic1 dfs.file1 dfs.client.failover.proxy.provider.mycluster1 dfs.journalnode.edits.dir
关闭HDFS HA 集群:
在其中一个节点上执行
$ sbin/stop-dfs.sh
分别关闭所有Zookeeper
$ bin/zkServer.sh stop
注意: 千万不要直接关机,容易造成数据损失,引起集群故障
再次启动HDFS HA 集群:
分别启动所有Zookeeper
$ bin/zkServer.sh start
为避免网络延时造成的连接超时,手动启动所有journalnode
$ sbin/hadoop.daemon.sh start journalnode
其中一个节点上执行
$ sbin/start-dfs.sh
MapReduce 和 Yarn
Yarn 与 MapReduce、HDFS关系图
Yarn 组件介绍
安排好集群节点的部署
Hadoop配置文件:
mapred-site.xml
执行MapReduce任务的运行框架<property> <name>mapreduce.framework.name</name> <value>yarn</value></property>
yarn-site.xml
NodeManager服务名称<property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value></property>ResourceManager 配置<property> <name>yarn.resourcemanager.ha.enabled</name> <value>true</value></property><property> <name>yarn.resourcemanager.cluster-id</name> <value>cluster1</value></property><property> <name>yarn.resourcemanager.ha.rm-ids</name> <value>rm1,rm2</value></property><property> <name>yarn.resourcemanager.hostname.rm1</name> <value>rm1的host名称</value></property><property> <name>yarn.resourcemanager.hostname.rm2</name> <value>rm2的host名称</value></property><property> <name>yarn.resourcemanager.zk-address</name> <value>zk1_host:2181,zk2_host:2181,zk3_host:2181</value></property>
整个集群启动
启动 Zookeeper集群
启动 HDFS HA 集群
在相应节点上启动 ResourceManager
$ sbin/yarn-daemon.sh start resourcemanager
在其中一个节点上启动 Yarn
$ sbin/start-yarn.sh
通过浏览器查看 ResourceManager 界面
运行伪分布式下的MapReduce测试程序
关闭整个集群
在其中一个节点上关闭 Yarn
$ sbin/stop-yarn.sh
在另一个节点上关闭 ResourceManager
$ sbin/yarn-daemon.sh stop resourcemanager
关闭 HDFS HA 集群
关闭 Zookeeper 集群
- Hadoop 2.5.2 安装
- hadoop 2.5.2安装
- Hadoop 2.5.2集群安装
- Hadoop-2.5.2集群安装配置笔记
- Hadoop-2.5.2集群安装配置详解
- Hadoop-2.5.2集群安装配置详解
- hadoop-2.5.2 安装与配置
- Hadoop 2.5.2版本安装部署
- hadoop-2.5.2安装配置简易步骤
- Hadoop 2.5.2版本安装部署
- apache hue安装(hadoop-2.5.2)
- hadoop安装(2)
- <Hadoop>Hadoop 2.7.2 集群安装
- hadoop 2.5 伪分布安装 -- fedora20安装hadoop-2.5.1
- hadoop 2.5 伪分布安装
- hadoop 2.5.1集群安装
- hadoop-2.5安装与配置
- Hadoop-2.5.1安装文档
- 第一个ios程序中的问题
- 【AJAX】$.get()方法补充知识
- memcached 命令行参数说明
- Android Studio使用记录
- 自定义控件H之——聊天ListView
- Hadoop 2.5.2 安装
- 关于android系统编译
- Android开发 图片轮播条Lanner(可无限滚动循环,自定义dots样式位置,延迟时间,滚动时间,点击事件)
- 最简单的C#socket通信
- 递归和闭包的理解
- 了解c#中的三层架构(DAL,BLL,UI)
- memcached主从复制
- 222. Count Complete Tree Nodes
- cmandroid系统编译