本篇内容介绍了“Hadoop高可用集群如何搭建”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
创新互联成都网站建设按需策划,是成都网站建设公司,为木包装箱提供网站建设服务,有成熟的网站定制合作流程,提供网站定制设计服务:原型图制作、网站创意设计、前端HTML5制作、后台程序开发等。成都网站建设热线:18982081108
共5个节点,主机名分别是hadoop101、hadoop102、hadoop103、hadoop104、hadoop105
初始启动集群,hadoop101上运行active namenode即主namenode;hadoop102上运行standby namenode即从namenode
每个节点运行的进程如下表
机器名 | 运行进程 |
---|---|
hadoop101 | NameNode/zkfc/Zookeeper/Journalnode/DataNode/NodeManager |
hadoop102 | NameNode/zkfc/Zookeeper/Journalnode/DataNode/NodeManager |
hadoop103 | Zookeeper/Journalnode/DataNode/NodeManager |
hadoop104 | ResourceManager |
hadoop105 | ResourceManager |
准备5台虚拟机,在做五节点hadoop-2.7.3 HA安装之前,要求完成每台虚拟机的环境准备。
举一反三:参考安装3节点hadoop-2.7.3集群时,在解压hadoop-2.7.3.tar.gz压缩包之前的操作;李老师之前已经讲过,不再赘述)
mac安装VMWare虚拟化软件
VMWare下安装CenoOS7 虚拟机关闭防火墙 禁用selinux 配置虚拟网卡 配置虚拟机网络 安装JDK 配置时间同步 修改主机名 修改ip地址 修改/etc/hosts 各节点免密钥登陆 重启虚拟机
hadoop101、hadoop102、hadoop103上安装zookeeper集群
注意:
此文档使用普通用户操作,如bruce;hadoop安装到用户主目录下,如/home/bruce请根据自己的实际情况修改
在node-01上解压hadoop压缩包到用户主目录(**~**表示用户主目录/home/bruce)
[daniel@hadoop101software]$ tar -zxvf hadoop-2.7.3.tar.gz -C/opt/moudle/
hadoop2.x的配置文件全部在$HADOOP_HOME/etc/hadoop下
[daniel@hadoop101 moudle]$ cd hadoop-2.7.3/etc/hadoop/
修改hadoop-env.sh;保存退出
export JAVA_HOME=/usr/java/jdk1.8.0_211-amd64
注意:JAVA_HOME值修改为自己jdk的实际目录
注意:情况一:值/home/bruce/hadoop-2.7.3/tmp根据实际情况修改情况二:值node-01:2181,node-02:2181,node-03:2181根据实际情况修改,修改成安装了zookeeper的虚拟机的主机名
fs.defaultFS hdfs://ns1 hadoop.tmp.dir /opt/moudle/hadoop-2.7.3/tmp ha.zookeeper.quorum hadoop101:2181,hadoop102:2181,hadoop103:2181
注意:
情况一:属性值qjournal://node-01:8485;node-02:8485;node-03:8485/ns1中的主机名,修改成实际安装zookeeper的虚拟机的主机名情况二:属性值/home/bruce/hadoop-2.7.3/journal中”/home/bruce/hadoop-2.7.3”替换成实际hadoop文件夹的路径情况三:属性值/home/bruce/.ssh/id_rsa中/home/bruce根据实际情况替换
dfs.nameservices ns1 dfs.ha.namenodes.ns1 nn1,nn2 dfs.namenode.rpc-address.ns1.nn1 hadoop101:9000 dfs.namenode.http-address.ns1.nn1 hadoop101:50070 dfs.namenode.rpc-address.ns1.nn2 hadoop102:9000 dfs.namenode.http-address.ns1.nn2 hadoop102:50070 dfs.namenode.shared.edits.dir qjournal://hadoop101:8485;hadoop102:8485;hadoop103:8485/ns1 dfs.journalnode.edits.dir /opt/moudle/hadoop-2.7.3/journal dfs.ha.automatic-failover.enabled true dfs.client.failover.proxy.provider.ns1 org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider dfs.ha.fencing.methods sshfence shell(/bin/true) dfs.ha.fencing.ssh.private-key-files /home/daniel/.ssh/id_rsa dfs.ha.fencing.ssh.connect-timeout 30000
重命名文件
[daniel@hadoop101 hadoop]$ mv mapred-site.xml.template mapred-site.xml [daniel@hadoop101 hadoop]$ vim mapred-site.xml
修改mapred-site.xml
mapreduce.framework.name yarn
注意:
情况一:属性yarn.resourcemanager.hostname.rm1的值node-04根据实际情况替换情况二:属性yarn.resourcemanager.hostname.rm2的值node-05根据实际情况替换情况三:属性值node-01:2181,node-02:2181,node-03:2181根据实际情况替换;替换成实际安装zookeeper的虚拟机的主机名
yarn.resourcemanager.ha.enabled true yarn.resourcemanager.cluster-id yrc yarn.resourcemanager.ha.rm-ids rm1,rm2 yarn.resourcemanager.hostname.rm1 hadoop104 yarn.resourcemanager.hostname.rm2 hadoop105 yarn.resourcemanager.zk-address hadoop101:2181,hadoop102:2181,hadoop103:2181 yarn.nodemanager.aux-services mapreduce_shuffle
node-01、node-02、node-03上运行了datanode、nodemanager,所以修改slaves内容替换为:
node-01 node-02 node-03
说明:~表示用户主目录
scp -r ~/hadoop-2.7.3/ node-02:~ scp -r ~/hadoop-2.7.3/ node-03:~ scp -r ~/hadoop-2.7.3/ node-04:~ scp -r ~/hadoop-2.7.3/ node-05:~
node-01到node-05五个节点,都配置环境变量
#将hadoop添加到环境变量中 vim ~/.bash_profile
添加内容如下(注意:若HADOOP_HOME已经存在,则修改):
export HADOOP_HOME=/home/bruce/hadoop-2.7.3/ export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
编译文件,使新增环境变量生效
source ~/.bash_profile
**注意:**严格按照下面的步骤 先检查各台hadoop环境变量是否设置好
注意:根据zookeeper实际安装情况,启动zookeeper
分别在node-01、node-02、node-03上启动zookeeper
[daniel@hadoop101 zookeeper-3.4.2]$ bin/zkServer.sh start [daniel@hadoop102 zookeeper-3.4.2]$ bin/zkServer.sh start [daniel@hadoop103 zookeeper-3.4.2]$ bin/zkServer.sh start
[daniel@hadoop101 zookeeper-3.4.2]$ bin/zkServer.sh status JMX enabled by default Using config: /opt/moudle/zookeeper-3.4.2/bin/../conf/zoo.cfg Mode: leader
分别在node-01、node-02、node-03上执行
[daniel@hadoop101 hadoop-2.7.3]$ hadoop-daemon.sh start journalnode [daniel@hadoop102 zookeeper-3.4.2]$ hadoop-daemon.sh start journalnode [daniel@hadoop103 zookeeper-3.4.2]$ hadoop-daemon.sh start journalnode
#根据集群规划node-01、node-02上运行namenode;所以只在主namenode节点即node-01上执行命令:
[daniel@hadoop101 hadoop-2.7.3]$ hdfs namenode -format
格式化后会根据core-site.xml中的hadoop.tmp.dir属性值/home/bruce/hadoop-2.7.3/tmp,并生成此文件夹
将/home/bruce/hadoop-2.7.3/tmp拷贝到node-02的/home/bruce/hadoop-2.7.3中
[daniel@hadoop101 hadoop-2.7.3]$ scp -r tmp/daniel@hadoop102:/opt/moudle/hadoop-2.7.3/
在node-01上执行即可
[daniel@hadoop101 hadoop-2.7.3]$ hdfs zkfc -formatZK
只在主namenode节点node-01上执行
[daniel@hadoop101 hadoop-2.7.3]$ sbin/start-dfs.sh
注意:只在主resourcemanager即node-04上执行start-yarn.sh
把namenode和resourcemanager部署在不同节点,是因为性能问题,因为他们都要占用大量资源 坑:在node-04上启动yarn之前,先依次从node-04 ssh远程连接到node-01、node-02、node-03、node-04、node-05;因为初次ssh时,需要交互,输入yes,回车
[daniel@hadoop104 hadoop-2.7.3]$ sbin/start-yarn.sh
在从resourcemanager即node-05上启动rm
[daniel@hadoop105 hadoop-2.7.3]$ yarn-daemon.sh start resourcemanager
node-01、node-02一主一备
http://node-01:50070
http://node-02:50070
在主namenode节点,运行
[daniel@hadoop102 hadoop-2.7.3]$ hadoop-daemon.sh stop namenode
访问之前为"备namenode"的WEB UI;发现状态更新为active
启动刚才手动停掉的namenode
hadoop-daemon.sh start namenode
访问它的WEB UI,发现状态更新为standby
node-04、node-05主备切换
node-04浏览器访问
[http://hadoop104:8088/cluster/cluster](http://hadoop104:8088/cluster/cluster)
node-05浏览器访问
[http://hadoop105:8088/cluster/cluster](http://hadoop105:8088/cluster/cluster)
在主resourcemanager节点,运行
[daniel@hadoop105 hadoop-2.7.3]$ yarn-daemon.sh stop resourcemanager
访问之前为"备resourcemanager"的WEB UI;发现状态更新为active
启动刚才手动停掉的resourcemanager
[daniel@hadoop105 hadoop-2.7.3]$ yarn-daemon.sh start resourcemanager
访问它的WEB UI,发现状态更新为standby
运行一下hadoop示例中的WordCount程序:
hadoop fs -put /home/bruce/hadoop-2.7.3/LICENSE.txt / hadoop jar hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount /LICENSE.txt /w0727
正确指令执行顺序如下
主namenode上运行
stop-dfs.sh
主resoucemanager上运行
stop-yarn.sh
从resoucemanager上运行
yarn-daemon.sh stop resourcemanager
关闭zookeeper集群;每个zk服务器运行
zkServer.sh stop
单独启动namenode
hadoop-daemon.sh start namenode
单独启动datanode
hadoop-daemon.sh start datanode
单独启动journalnode
hadoop-daemon.sh start journalnode
启动zookeeper
./zkServer.sh start
启动hdfs
start-dfs.sh
启动yarn
start-yarn.sh
单独启动resorucemanager
yarn-daemon.sh start resouremanger
“Hadoop高可用集群如何搭建”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!