hadoop HA集群的搭建

1,集群规划

描述:Hadoop HA的搭建依赖zookeeper,
我准备四台主机:hadoop01,hadoop02,hadoop03,hadoop04
其中:hadoop01和hadoop02做namenode的主备切换
hadoop03和hadoop04做resourcemanager 的主备切换


四台:

  hadoop01 hadoop02 hadoop03 hadoop04
namenode           √   √    
datanode   √   √   √   √
resourcemanager       √   √
nodemanager   √   √   √   √
zookeeper   √   √   √  
journalnode     √   √   √  
zkfc    √   √    


2,集群服务器准备

// 参考http://blog.csdn.net/freefish_yzx/article/details/76461629
hadoop HA集群的搭建_第1张图片

3,集群的安装

1、 安装 Zookeeper 集群
如果没有安装
参考:http://blog.csdn.net/freefish_yzx/article/details/77359963
2、 安装 hadoop 集群

           1、 上传安装包 hadoop-2.6.5-centos-6.7.tar.gz
2、 解压到对应的安装目录
[hadoop@hadoop01 ~]$ tar -zxvf hadoop-2.6.5-centos-6.7.tar.gz -C /home/hadoop/apps/
3、 修改配置文件
1、 修改 hadoo-env.sh
修改一行
# The java implementation to use.
export JAVA_HOME=/usr/local/jdk1.8.0_73
2、 修改 core-site.xml



fs.defaultFS
hdfs://myha01/



hadoop.tmp.dir
/home/hadoop/data/hadoopdata/



ha.zookeeper.quorum
hadoop01:2181,hadoop02:2181,hadoop03:2181

3、 修改 hdfs-site.xml




dfs.replication
2



dfs.nameservices
myha01


nn1,nn2



dfs.namenode.rpc-address.myha01.nn1
hadoop02:9000



Stay hungry Stay foolish -- http://blog.csdn.net/zhongqi2513
dfs.namenode.http-address.myha01.nn1
hadoop02:50070



dfs.namenode.rpc-address.myha01.nn2
hadoop03:9000



dfs.namenode.http-address.myha01.nn2
hadoop03:50070



dfs.namenode.shared.edits.dir
qjournal://hadoop02:8485;hadoop03:8485;hadoop04:8485/myha01



dfs.journalnode.edits.dir
/home/hadoop/data/journaldata



  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License. See accompanying LICENSE file.
-->






dfs.replication
2



dfs.nameservices
myha01



dfs.ha.namenodes.myha01
nn1,nn2



dfs.namenode.rpc-address.myha01.nn1
hadoop01:9000




dfs.namenode.http-address.myha01.nn1
hadoop01:50070



dfs.namenode.rpc-address.myha01.nn2
hadoop02:9000



dfs.namenode.http-address.myha01.nn2
hadoop02:50070



dfs.namenode.shared.edits.dir
qjournal://hadoop01:8485;hadoop02:8485;hadoop03:8485/myha01



dfs.journalnode.edits.dir
/home/hadoop/data/journaldata



dfs.ha.automatic-failover.enabled
true




dfs.client.failover.proxy.provider.myha01
org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider




dfs.ha.fencing.methods

sshfence
shell(/bin/true)




dfs.ha.fencing.ssh.private-key-files
/home/hadoop/.ssh/id_rsa



dfs.ha.fencing.ssh.connect-timeout
30000


4、 修改 mapred-site.xml
mv  mapred-site.xml.template mapred-site.xml

                

mapreduce.framework.name
yarn



mapreduce.jobhistory.address
hadoop01:10020



mapreduce.jobhistory.webapp.address
hadoop01:19888

5、 修改 yarn-site.xml



        


yarn.resourcemanager.ha.enabled
true



yarn.resourcemanager.cluster-id
yrc



yarn.resourcemanager.ha.rm-ids
rm1,rm2



yarn.resourcemanager.hostname.rm1
hadoop03


yarn.resourcemanager.hostname.rm2
hadoop04



yarn.resourcemanager.zk-address
hadoop01:2181,hadoop02:2181,hadoop03:2181



yarn.nodemanager.aux-services
mapreduce_shuffle



yarn.log-aggregation-enable
true




yarn.log-aggregation.retain-seconds
86400



yarn.resourcemanager.recovery.enabled
true



yarn.resourcemanager.store.class
org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore

6、 修改 slaves
vi slaves
添加 datanode 的节点地址:
hadoop01
hadoop02
hadoop03
hadoop04
7、 分发安装包到其他机器
scp -r hadoop-2.6.5 hadoop@hadoop02:$PWD
scp -r hadoop-2.6.5 hadoop@hadoop03:$PWD
scp -r hadoop-2.6.5 hadoop@hadoop04:$PWD
8、 并分别配置环境变量
vi ~/.bashrc
添加两行:
export HADOOP_HOME=/home/hadoop/apps/hadoop-2.6.5
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
保存退出
source ~/.bashrc



4、 集群初始化操作( 记住:严格按照以下步骤执行)



1、 先启动 zookeeper 集群
启动:zkServer.sh start
检查启动是否正常:zkServer.shstatus
hadoop HA集群的搭建_第2张图片
这里应该只有三台正常,另外一个hadoop04没装

2、 分别在每个 zookeeper (也就是规划的三个 journalnode 节点, 不一定跟 zookeeper
节点一样)节点上启动 journalnode 进程
[hadoop@hadoop01 ~]$ hadoop-daemon.sh start journalnode
[hadoop@hadoop02 ~]$ hadoop-daemon.sh start journalnode
[hadoop@hadoop03 ~]$ hadoop-daemon.sh start journalnode

然后用 jps 命令查看是否各个 datanode 节点上都启动了 journalnode 进程
如果报错,根据错误提示改进
hadoop HA集群的搭建_第3张图片
3、 在第一个 namenode 上执行格式化操作
[hadoop@hadoop01 ~]$ hadoop namenode -format

hadoop HA集群的搭建_第4张图片

然后会在 core-site.xml 中配置的临时目录中生成一些集群的信息
Stay hungry Stay foolish -- http://blog.csdn.net/zhongqi2513
把他拷贝的第二个 namenode 的相同目录下
hadoop.tmp.dir
/home/hadoop/data/hadoopdata/
这个目录下
[hadoop@hadoop01~]$ scp -r ~/data/hadoopdata/ hadoop02:~/data
或者也可以执行:hadoop namenode -bootstrapStandby
hadoop HA集群的搭建_第5张图片

4、 格式化 ZKFC
[hadoop@hadoop01 ~]$ hdfs zkfc -formatZK
在第一台机器上即可

5、 启动 HDFS
[hadoop@hadoop01 ~]$ start-dfs.sh

hadoop HA集群的搭建_第6张图片

查看各节点进程是否启动正常:依次为 1234 四台机器的进程

hadoop HA集群的搭建_第7张图片

访问 web 页面 http://hadoop01:50070
先C:\Windows\System32\drivers\etc  
添加主机映射
192.168.123.151 hadoop01
192.168.123.152 hadoop02
192.168.123.153 hadoop03
192.168.123.154 hadoop04

hadoop HA集群的搭建_第8张图片
hadoop HA集群的搭建_第9张图片





6、 启动 YARN
[hadoop@hadoop03 ~]$ start-yarn.sh
在主备 resourcemanager 中随便选择一台进行启动, 正常启动之后, 检查各节点的进程:

若备用节点的 resourcemanager 没有启动起来,则手动启动起来
[hadoop@hadoop03 ~]$ yarn-daemon.sh start resourcemanager

之后打开浏览器访问页面:http://hadoop03:8088


hadoop HA集群的搭建_第10张图片

访问 web 页面:http://hadoop04:8088

hadoop04是 standby resourcemanager,会自动跳转到 hadoop03

7、 查看各主节点的状态

HDFS:
hdfs haadmin -getServiceState nn1 
hdfs haadmin -getServiceState nn2

hadoop HA集群的搭建_第11张图片

YARN:
yarn rmadmin -getServiceState rm1
yarn rmadmin -getServiceState rm2




4,集群启动测试


1、干掉 active namenode, 看看集群有什么变化
2、在上传文件的时候干掉 active namenode, 看看有什么变化
3、干掉 active resourcemanager, 看看集群有什么变化
4、在执行任务的时候干掉 active resourcemanager,看看集群有什么变化

你可能感兴趣的:(hadoop)