集群搭建
Files: hadoop集群搭建
Tags: Mar 10, 2019
1.搭建前提
- centOS6.7 集群
hadoop1 192.168.111.133
hadoop2 192.168.111.134
hadoop3 192.168.111.135
- 安装JDK,zookeeper
2.规划
安装目录:/home/hadoop1/apps
数据目录:/hoem/hadoop1/data1/hadoopdata
journal目录:[root@skycloud1 hadoop]# mkdir - p /opt/hadoop-2.6.4/journal
3.上传解压
tar -zxvf hadoop-2.6.4.tar.gz
4.修改配置文件
-
修改core-site.xml
[root@hadoop1 hadoop]# pwd /home/hadoop1/apps/hadoop-2.6.4/etc/hadoop [root@hadoop1 hadoop]# vi core-site.xml <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://hadoop1:9000</value> </property> <!-- 指定 hadoop 临时目录 --> <property> <name>hadoop.tmp.dir</name> <value>/home/hadoop1/data1/hadoopdata</value> </property> <!-- 指定 zookeeper 地址 --> <property> <name>ha.zookeeper.quorum</name> <value>hadoop1:2181,hadoop2:2181,hadoop3:2181</value> </property> </configuration>
-
加入以下配置(JDK)
export JAVA_HOME=/usr/local/jdk1.7.0_80
-
修改 hdfs-site.xml
<configuration> <!--指定 hdfs 的 nameservice 为 mycluster,需要和 core-site.xml 中的保持一致 --> <property> <name>dfs.nameservices</name> <value>mycluster</value> </property> <!-- mycluster 下面有两个 NameNode,分别是 nn1,nn2 --> <property> <name>dfs.ha.namenodes.mycluster</name> <value>nn1,nn2</value> </property> <!-- nn1 的 RPC 通信地址 --> <property> <name>dfs.namenode.rpc-address.mycluster.nn1</name> <value>hadoop1:9000</value> </property> <!-- nn1 的 http 通信地址 --> <property> <name>dfs.namenode.http-address.mycluster.nn1</name> <value>hadoop1:50070</value> </property> <!-- nn2 的 RPC 通信地址 --> <property> <name>dfs.namenode.rpc-address.mycluster.nn2</name> <value>hadoop2:9000</value> </property> <!-- nn2 的 http 通信地址 --> <property> <name>dfs.namenode.http-address.mycluster.nn2</name> <value>hadoop:50070</value> </property> <!-- 指定 NameNode 的元数据在 JournalNode 上的存放位置 --> <property> <name>dfs.namenode.shared.edits.dir</name> <value>qjournal://hadoop1:8485;hadoop2:8485;hadoop3:8485/mycluster</value> </property> <!-- 指定 JournalNode 在本地磁盘存放数据的位置 --> <property> <name>dfs.journalnode.edits.dir</name> <value>/opt/hadoop-2.6.4/journal</value> </property> <!-- 开启 NameNode 失败自动切换 --> <property> <name>dfs.ha.automatic-failover.enabled</name> <value>true</value> </property> <!-- 配置失败自动切换实现方式 --> <property> <name>dfs.client.failover.proxy.provider.mycluster</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>
-
修改slaves
hadoop1
hadoop2
hadoop3 -
加入以下配置(JDK)
export JAVA_HOME=/usr/local/jdk1.7.0_80
-
修改 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>hadoop1</value> </property> <property> <name>yarn.resourcemanager.hostname.rm2</name> <value>hadoop2</value> </property> <!-- 指定 zk 集群地址 --> <property> <name>yarn.resourcemanager.zk-address</name> <value>hadoop1:2181,hadoop2:2181,hadoop3:2181</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration>
-
修改 yarn-env.sh
添加一下配置(JDK)
export JAVA_HOME=/usr/local/jdk1.7.0_80/
5.配置hadoop的环境变量
#hadoop
export HADOOP_HOME=/home/hadoop1/apps/hadoop-2.6.4
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:
配置完后查看hadoop版本 hadoop version
6.发送到其它机器上
每台虚拟机中的hadoop安装包的目录以及配置信息必须一致
scp -r ~/apps/hadoop-2.6.4/ hadoop2:~/apps/
scp -r ~/apps/hadoop-2.6.4/ hadoop3:~/apps/
7.启动及bug解决
启动报两个bug:
-
格式化namenode失败 hadoop namenode -format
解决办法:
先用./zkServer.sh start 启动各个zookeeper,再用./ hadoop-daemon.sh start journalnode启动 各个NodeName上的 JournalNode进程,之后再 hadoop namenode -format 就成功
-
在hadoop1上 jps 没有namenode节点
1、先运行stop-all.sh 2、删除原目录,即core-site.xml下配置的<name>hadoop.tmp.dir</name>所指向的目录,重新建立配置的空目录 格式化namdenode,hadoop namenode -format 3、运行start-all.sh
至此集群搭建完:访问:http://192.168.111.133:50070,可看到以下界面
8.启动集群脚本
所在目录: /home/hadoop1/start_sh
创建脚本: vi hadoop.sh
脚本内容:
#!/bin/bash
cd /home/hadoop1/apps/hadoop-2.6.4/sbin
./start-all.sh
启动脚本:
sh hadoop.sh