Hadoop2.6.5高可用集群搭建

软件环境:

linux系统: CentOS6.7
Hadoop版本: 2.6.5
zookeeper版本: 3.4.8

</br>

主机配置:

一共m1, m2, m3这五部机, 每部主机的用户名都为centos
192.168.179.201: m1 
192.168.179.202: m2 
192.168.179.203: m3 

m1: Zookeeper, Namenode, DataNode, ResourceManager, NodeManager, Master, Worker
m2: Zookeeper, Namenode, DataNode, ResourceManager, NodeManager, Worker
m3: Zookeeper, DataNode, NodeManager, Worker

</br>

前期准备

1.配置主机IP:
sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0
2.配置主机名:
sudo vi /etc/sysconfig/network
3.配置主机名和IP的映射关系:
sudo vi /etc/hosts
4.关闭防火墙
  1. 临时关闭:
service iptables   stop
service iptables   status
  1. 开机时自动关闭:
chkconfig iptables   off
chkconfig iptables   --list

</br>

搭建步骤:

一.安装配置Zookeeper集群(在m1,m2,m3三部主机上)
1.解压
tar  -zxvf zookeeper-3.4.8.tar.gz  -C  /home/hadoop/soft/zookeeper

2.配置环境变量
vi  /etc/profile
## Zookeeper
export   ZK_HOME=/home/centos/soft/zookeeper
export   CLASSPATH=$CLASSPATH:$ZK_HOME/lib
export   PATH=$PATH:$ZK_HOME/sbin:$ZK_HOME/bin
source  /etc/profile

3.修改配置
  1. 配置zoo.cfg文件
cd  /home/centos/soft/zookeeper/conf/
cp  zoo_sample.cfg  zoo.cfg
vi  zoo.cfg
## 修改dataDir此项配置
dataDir=/home/centos/soft/zookeeper/tmp
## 添加以下三项配置
server.1=m1:2888:3888
server.2=m2:2888:3888
server.3=m3:2888:3888
  1. 创建tmp目录
mkdir /home/centos/soft/zookeeper/tmp
  1. 编辑myid文件
touch   /home/centos/soft/zookeeper/tmp/myid
echo  1  >   /home/centos/soft/zookeeper/tmp/myid            ## 在m1主机上myid=1
  1. 配置zookeeper日志存放位置
  2. 编辑zkEnv.sh文件
vi  /home/centos/soft/zookeeper/bin/zkEnv.sh
# 编辑下列该项配置
if   [ "x${ZOO_LOG_DIR}" = "x" ]
 then
        ZOO_LOG_DIR="/home/centos/soft/zookeeper/logs"            ## 修改此项
fi
  1. 创建logs目录
mkdir /home/centos/soft/zookeeper/logs

5. 拷贝到其他主机并修改myid
  1. 拷贝到其他主机
scp -r /home/centos/soft/zookeeper/ m2:/home/centos/soft/
scp -r /home/centos/soft/zookeeper/ m3:/home/centos/soft/
  1. 修改myid
echo 2 > /home/centos/soft/zookeeper/tmp/myid     ## m2主机
echo 3 > /home/centos/soft/zookeeper/tmp/myid     ## m3主机

</br>
</br>

二.安装配置hadoop集群(在m1上操作)

1.解压
tar  -zxvf  hadoop-2.6.5.tar.gz  -C  /home/centos/soft/hadoop

2.将Hadoop配置进环境变量
vi   /etc/profile
## Java
export JAVA_HOME=/home/centos/soft/jdk
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin

## Hadoop
export HADOOP_USER_NAME=centos
export HADOOP_HOME=/home/centos/soft/hadoop
export CLASSPATH=$CLASSPATH:$HADOOP_HOME/lib
export PATH=$PATH:$HADOOP_HOME/bin
source /etc/profile

3.修改Hadoop的配置文件 (切记:不可在配置文件中使用变量, 如$HADOOP_HOME, 不然会死的很惨), hadoop所有的配置文件都在${HADOOP_HOME}/etc/hadoop目录下, 一共有6个配置文件需要改**
  1. 编辑$hadoop-env.sh文件
export  JAVA_HOME=/home/centos/soft/jdk
  1. 编辑core-site.xml文件
<configuration>
<property>
   <name>fs.defaultFS</name>
   <value>hdfs://ns1</value>
</property>
<property>
   <name>hadoop.tmp.dir</name>
   <value>/home/centos/soft/hadoop/tmp</value>
</property>
<property>
   <name>ha.zookeeper.quorum</name>
   <value>m1:2181,m2:2181,m3:2181</value>
</property>
<!-- 在Hive的hplsql功能中用到: Hadoop的代理接口与代理名, 其中centos为HDFS的主NameNode的用户, 根据实际情况修改 -->
<property>
      <name>hadoop.proxyuser.centos.hosts</name>
      <value>*</value>
</property>
<property>
   <name>hadoop.proxyuser.centos.groups</name>
      <value>*</value>
</property>
</configuration>
  1. 编辑hdfs-site.xml文件
<configuration>
<property>
   <name>dfs.nameservices</name>
   <value>ns1</value>
</property>
<property>
   <name>dfs.ha.namenodes.ns1</name>
   <value>nn1,nn2</value>
</property>
<property>
   <name>dfs.namenode.rpc-address.ns1.nn1</name>
   <value>m1:9000</value>
</property>
<property>
   <name>dfs.namenode.http-address.ns1.nn1</name>
   <value>m1:50070</value>
</property>
<property>
   <name>dfs.namenode.rpc-address.ns1.nn2</name>
   <value>m2:9000</value>
</property>
<property>
   <name>dfs.namenode.http-address.ns1.nn2</name>
   <value>m2:50070</value>
</property>
<property>
   <name>dfs.namenode.shared.edits.dir</name>
   <value>qjournal://m1:8485;m28485;m3:8485/ns1</value>
</property>
<property>
   <name>dfs.journalnode.edits.dir</name>
   <value>/home/centos/soft/hadoop/journal</value>
</property>
<property>
   <name>dfs.namenode.name.dir</name>
   <value>/home/centos/soft/hadoop/tmp/dfs/name</value>
</property>
<property>  
 <name>dfs.datanode.data.dir</name>
 <value>/home/centos/soft/hadoop/tmp/dfs/data</value>
</property>
<property>
   <name>dfs.replication</name>
   <value>1</value>
</property>
<property>
   <name>dfs.ha.automatic-failover.enabled</name>
   <value>true</value>
</property>
<property>
   <name>dfs.webhdfs.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>
<property>
   <name>dfs.ha.fencing.ssh.private-key-files</name>
   <value>/home/centos/.ssh/id_rsa</value>
</property>
<property>
   <name>dfs.ha.fencing.ssh.connect-timeout</name>
   <value>30000</value>
</property>
<property>
   <name>dfs.permissions</name>
   <value>false</value>
</property>
<property>
    <name>heartbeat.recheck.interval</name>
   <value>2000</value>
</property>
<property>
   <name>dfs.heartbeat.interval</name>
      <value>1</value>
</property>
<property>
      <name>dfs.blockreport.intervalMsec</name>
      <value>3600000</value>
      <description>Determines block reporting interval in milliseconds.</description>
</property>
</configuration>
```

4. 编辑mapred-site.xml文件
```
<configuration>
<property>
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
</property>
<property>
      <name>mapreduce.jobhistory.address</name>
      <value>0.0.0.0:10020</value>
      <description>MapReduce JobHistory Server IPC host:port</description>
</property>
<property>
      <name>mapreduce.jobhistory.webapp.address</name>
      <value>0.0.0.0:19888</value>
      <description>MapReduce JobHistory Server Web UI host:port</description>
</property>
<property>
      <name>mapreduce.task.io.sort.mb</name>
      <value>1</value>
</property>
<property>
      <name>yarn.app.mapreduce.am.staging-dir</name>
      <value>/user</value>
</property>
<property>
      <name>mapreduce.jobhistory.intermediate-done-dir</name>
      <value>/user/history/done_intermediate</value>
</property>
<property>
      <name>mapreduce.jobhistory.done-dir</name>
      <value>/user/history</value>
</property>
</configuration>    
```

5. 编辑yarn-site.xml文件
```
<configuration>
<property>
      <name>yarn.resourcemanager.ha.enabled</name>
      <value>true</value>
</property>
<property>
      <name>yarn.resourcemanager.cluster-id</name>
      <value>yrc</value>
</property>
<property>
      <name>yarn.resourcemanager.ha.rm-ids</name>
      <value>rm1,rm2</value>
</property>
<property>
      <name>yarn.resourcemanager.hostname.rm1</name>
      <value>m1</value>
</property>
<property>
      <name>yarn.resourcemanager.hostname.rm2</name>
      <value>m2</value>
</property>
<property>
      <name>yarn.resourcemanager.zk-address</name>
      <value>m1:2181,m2:2181,m3:2181</value>
</property>
<property>
      <name>yarn.nodemanager.aux-services</name>
      <value>mapreduce_shuffle,spark_shuffle</value>
</property>
<property>
      <name>yarn.nodemanager.resource.memory-mb</name>
      <value>2048</value>
</property>
<property>
      <name>yarn.scheduler.maximum-allocation-mb</name>
      <value>4096</value>
</property>
<property>
      <name>yarn.nodemanager.log-dirs</name>
      <value>/home/centos/soft/hadoop/logs</value>
</property>
<property>
      <name>yarn.resourcemanager.scheduler.class</name>
      <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value>
</property>
<property>  
      <name>yarn.nodemanager.aux-services.spark_shuffle.class</name>  
      <value>org.apache.spark.network.yarn.YarnShuffleService</value>  
</property> 
<property>
      <name>yarn.nodemanager.pmem-check-enabled</name>
      <value>false</value>
      <description>是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认是true</description>
</property>
<property>
      <name>yarn.nodemanager.vmem-check-enabled</name>
      <value>false</value>
      <description>是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认是true</description>
</property>
<property>
      <name>spark.shuffle.service.port</name>
      <value>7337</value>
</property>
</configuration>
```

6. 编辑slaves文件, slaves是指定子节点的位置, 在HDFS上为DataNode的节点位置, 在YARN上为NodeManager的节点位置, 以你的实际情况而定
```
m1
m2
m3
```


****
</br>
</br>
##三.初始化Hadoop
#####1. 配置主机之间免密码登陆
1. 在m1上生产一对密匙
```
ssh-keygen -t rsa
```

2. 将公钥拷贝到其他节点,包括本主机
```
ssh-coyp-id 127.0.0.1
ssh-coyp-id localhost
ssh-coyp-id m1
ssh-coyp-id m2
ssh-coyp-id m3
```

3. 在其他主机上重复(1)(2)的操作
                

---
#####2.将配置好的hadoop拷贝到其他节点
```
scp -r /home/centos/soft/hadoop m2:/home/centos/soft/
scp -r /home/centos/soft/hadoop m3:/home/centos/soft/
```



---
</br>
####注意:严格按照下面的步骤
#####3.启动zookeeper集群(分别在m1、m2、m3上启动zk)
1. 启动zookeeper服务
```
cd /home/centos/soft/zookeeper-3.4.8/bin/
```
```
./zkServer.sh start
```

2. 查看状态:一个leader,两个follower
```
./zkServer.sh status
```

    
----
#####4.启动journalnode (分别在m1、m2、m3主机上执行, 必须在HDFS格式化前执行, 不然会报错)
1. 启动JournalNode服务
```
cd /home/centos/soft/hadoop
```
```
sbin/hadoop-daemon.sh start journalnode
```

2. 运行jps命令检验,m1、m2、m3上多了JournalNode进程
```
jps
```

---
#####5.格式化HDFS(在m1上执行即可)
1. 在m1上执行命令:
```
hdfs namenode -format
```

2. 格式化后会在根据core-site.xml中的hadoop.tmp.dir配置生成个文件,这里我配置的是/home/centos/soft/hadoop/tmp,然后将m1主机上的/home/centos/soft/hadoop下的tmp目录拷贝到m2主机上的/home/centos/soft/hadoop目录下
```
scp -r /home/centos/soft/hadoop/tmp/ m2:/home/centos/soft/hadoop/
```


---
#####6.格式化ZK(在m1上执行)
```
hdfs zkfc -formatZK
```


---
#####7.启动HDFS(在m1上执行)
```
sbin/start-dfs.sh
```


---
#####8.启动YARN(在m1,m2上执行)
```
sbin/start-yarn.sh
```


---
##### 至此,Hadoop-2.6.5配置完毕!!!



---
</br>
</br>
###四.检验Hadoop集群搭建成功
######0.在Windows下编辑hosts文件, 配置主机名与IP的映射(此步骤可跳过)**
```
C:\Windows\System32\drivers\etc\hosts

192.168.179.201     m1
192.168.179.202     m2
192.168.179.203     m3
```


----
######1.可以统计浏览器访问:
```
  http://m1:50070
      NameNode 'm1:9000' (active)
  http://m2:50070
      NameNode 'm2:9000' (standby)
```

---
######2.验证HDFS HA
1. 首先向hdfs上传一个文件
```
hadoop fs -put /etc/profile /profile
```

2. 查看是否已上传到HDFS上
```
hadoop fs -ls /
```

3. 然后再kill掉active的NameNode
```
kill -9 <pid of NN>
```

4. 通过浏览器访问:http://m2:50070
```
NameNode 'm2:9000' (active)             ## 主机m2上的NameNode变成了active
```

5. 执行命令:
```
hadoop fs -ls /                          ## 看之前在m1上传的文件是否还存在!!!
```

6. 手动在m1上启动挂掉的NameNode
```
sbin/hadoop-daemon.sh start namenode
```

7. 通过浏览器访问:http://m1:50070
```
NameNode 'm1:9000' (standby)
```



---
######3.验证YARN:
1. 用浏览器访问: http://m1:8088, 查看是否有NodeManager服务在运行
2. 运行一下hadoop提供的demo中的WordCount程序, 在linux上执行以下命令
```
hadoop jar /home/centos/soft/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.5.jar wordcount InputParameter OutputParameter
```
在http://m1:8088 上是否有application在运行,若有则YARN没问题
---


</br>
######OK,大功告成!!!

</br>
</br>
</br>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,839评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,543评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,116评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,371评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,384评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,111评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,416评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,053评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,558评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,007评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,117评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,756评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,324评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,315评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,539评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,578评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,877评论 2 345

推荐阅读更多精彩内容