内容简介:Zookeeper集群:192.168.176.131 (bigdata112)192.168.176.132 (bigdata113)
一、集群的规划
Zookeeper集群:
192.168.176.131 (bigdata112)
192.168.176.132 (bigdata113)
192.168.176.135 (bigdata114)
Hadoop集群:
192.168.176.131 (bigdata112) NameNode1 ResourceManager1 Journalnode
192.168.176.132 (bigdata113) NameNode2 ResourceManager2 Journalnode
192.168.176.135 (bigdata114) DataNode1 NodeManager1
192.168.176.136 (bigdata115) DataNode2 NodeManager2
二、准备工作
1、安装JDK
2、配置环境变量
3、配置免密码登录
4、配置主机名
三、配置Zookeeper(在192.168.176.131安装)
在主节点(bigdata112)上配置ZooKeeper
(*)配置/training/zookeeper-3.4.6/conf/zoo.cfg文件
dataDir=/training/zookeeper-3.4.6/tmp server.1=bigdata112:2888:3888 server.2=bigdata113:2888:3888 server.3=bigdata114:2888:3888
(*)在/training/zookeeper-3.4.6/tmp目录下创建一个myid的空文件
echo 1 > /training/zookeeper-3.4.6/tmp/myid
(*)将配置好的zookeeper拷贝到其他节点,同时修改各自的myid文件
scp -r /training/zookeeper-3.4.6/ bigdata113:/training
scp -r /training/zookeeper-3.4.6/ bigdata114:/training
(*)分别修改113和114上/training/zookeeper-3.4.6/tmp/myid为2和3
四、安装Hadoop集群(在bigdata112上安装)
1、修改hadoo-env.sh
export JAVA_HOME=/training/jdk1.8.0_144
2、修改core-site.xml
<configuration>
<!-- 指定hdfs的nameservice为ns1 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://ns1</value>
</property>
<!-- 指定hadoop临时目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/training/hadoop-2.7.3/tmp</value>
</property>
<!-- 指定zookeeper地址 -->
<property>
<name>ha.zookeeper.quorum</name>
<value>bigdata112:2181,bigdata113:2181,bigdata114:2181</value>
</property>
</configuration>
3、修改hdfs-site.xml(配置这个nameservice中有几个namenode)
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<configuration>
<!--指定hdfs的nameservice为ns1,需要和core-site.xml中的保持一致 -->
<property>
<name>dfs.nameservices</name>
<value>ns1</value>
</property>
<!-- ns1下面有两个NameNode,分别是nn1,nn2 -->
<property>
<name>dfs.ha.namenodes.ns1</name>
<value>nn1,nn2</value>
</property>
<!-- nn1的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.ns1.nn1</name>
<value>bigdata112:9000</value>
</property>
<!-- nn1的http通信地址 -->
<property>
<name>dfs.namenode.http-address.ns1.nn1</name>
<value>bigdata112:50070</value>
</property>
<!-- nn2的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.ns1.nn2</name>
<value>bigdata113:9000</value>
</property>
<!-- nn2的http通信地址 -->
<property>
<name>dfs.namenode.http-address.ns1.nn2</name>
<value>bigdata113:50070</value>
</property>
<!-- 指定NameNode的日志在JournalNode上的存放位置 -->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://bigdata112:8485;bigdata113:8485;/ns1</value>
</property>
<!-- 指定JournalNode在本地磁盘存放数据的位置 -->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/training/hadoop-2.7.3/journal</value>
</property>
<!-- 开启NameNode失败自动切换 -->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<!-- 配置失败自动切换实现方式 -->
<property>
<name>dfs.client.failover.proxy.provider.ns1</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<!-- 配置隔离机制方法,多个机制用换行分割,即每个机制暂用一行-->
<property>
<name>dfs.ha.fencing.methods</name>
<value>
sshfence
shell(/bin/true)
</value>
</property>
<!-- 使用sshfence隔离机制时需要ssh免登陆 -->
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/root/.ssh/id_rsa</value>
</property>
<!-- 配置sshfence隔离机制超时时间 -->
<property>
<name>dfs.ha.fencing.ssh.connect-timeout</name>
<value>30000</value>
</property>
</configuration>
4、修改mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
5、修改yarn-site.xml
<configuration>
<!-- 开启RM高可靠 -->
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<!-- 指定RM的cluster id -->
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>yrc</value>
</property>
<!-- 指定RM的名字 -->
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<!-- 分别指定RM的地址 -->
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>bigdata112</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>bigdata113</value>
</property>
<!-- 指定zk集群地址 -->
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>bigdata112:2181,bigdata113:2181,bigdata114:2181</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
6、修改slaves
bigdata14
bigdata15
7、将配置好的hadoop拷贝到其他节点
scp -r /training/hadoop-2.7.3/ root@bigdata113:/training/
scp -r /training/hadoop-2.7.3/ root@bigdata114:/training/
scp -r /training/hadoop-2.7.3/ root@bigdata115:/training/
五、启动Zookeeper集群
进到zk的安装目录的bin目录下:
启动
./zkServer.sh start
查看状态
./zkServer.sh status
六、在bigdata112和bigdata113上启动journalnode
hadoop-daemon.sh start journalnode
七、格式化HDFS(在bigdata112上执行)
-
格式化HDFS
hdfs namenode -format
2.将112上这台的/training/hadoop-2.7.3/tmp/dfs拷贝到bigdata13的/training/hadoop-2.7.3/tmp/dfs下
scp -r /training/hadoop-2.7.3/tmp/dfs/* root@bigdata113:/training/hadoop-2.7.3/tmp/dfs/
3.格式化zookeeper
hdfs zkfc -formatZK
日志:
17/07/13 00:34:33 INFO ha.ActiveStandbyElector: Successfully created /hadoop-ha/ns1 in ZK.
八、在bigdata12上启动Hadoop集群
start-all.sh
日志:
Starting namenodes on [bigdata12 bigdata13]
bigdata12: starting namenode, logging to /root/training/hadoop-2.4.1/logs/hadoop-root-namenode-hadoop113.out
bigdata13: starting namenode, logging to /root/training/hadoop-2.4.1/logs/hadoop-root-namenode-hadoop112.out
bigdata14: starting datanode, logging to /root/training/hadoop-2.4.1/logs/hadoop-root-datanode-hadoop115.out
bigdata15: starting datanode, logging to /root/training/hadoop-2.4.1/logs/hadoop-root-datanode-hadoop114.out
bigdata13: starting zkfc, logging to /root/training/hadoop-2.7.3/logs/hadoop-root-zkfc-bigdata13.out
bigdata12: starting zkfc, logging to /root/training/hadoop-2.7.3/logs/hadoop-root-zkfc-bigdata12.out
bigdata113上的ResourceManager需要单独启动
命令:yarn-daemon.sh start resourcemanager
九、问题延伸
1、隔离机制和隔离级别
(*)关系型数据库:如果不考虑事务隔离级别,造成脏读、不可重复读、幻读
(*)HDFS的HA:如果不考虑隔离机制(隔离级别),造成脑裂的问题
2、什么是脑裂的问题?
脑裂的问题,针对的是数据节点(DataNode)
由于某种原因,造成了整个HDFS中存在多个active的NameDode,这时候DataNode就不知道谁是真正的NameNode。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Powerful
Patty McCord / Missionday / 2018-1-25
Named by The Washington Post as one of the 11 Leadership Books to Read in 2018 When it comes to recruiting, motivating, and creating great teams, Patty McCord says most companies have it all wrong. Mc......一起来看看 《Powerful》 这本书的介绍吧!