Hadoop 2.4.1 HA集群搭建

一:注意事项和准备工作

  1.1  准备3台Linux,可以ubuntu或者centOS ,本机设备性能不高,建议用设置开机进入命令行,然后用远程操作

  1.2  a .linux 必须关掉防火墙  b.设置ip和主机名并且配置ip和主机映射关系(不懂百度一下)

         b.用root用户进行操作,后面可以遇到最大limit文件数的问题,root可以直接操作,比较方便!

 1.3 群集规划


二:操作步骤

 2.1 安装jdk并设置环境变量(不懂可以看上一篇Hadoop伪分布搭建)

 2.2 配置免密码登陆

   a. #首先要配置sunshine02到sunshine02、sunshine03、sunshine04的免密码

   b. #在sunshine02上生产一对钥匙 

                  ssh-keygen -t rsa

   c .#将公钥拷贝到其他节点,包括自己

                  ssh-copy-id sunshine02

                  ssh-copy-id sunshine03

                  ssh-copy-id sunshine04

  d. sunshine03到sunshine02、sunshine03、sunshine04的免密码同上操作

  e. sunshine04到sunshine02、sunshine03、sunshine04的免密码同上操作

  f. 注意:两个namenode之间要配置ssh免密码登陆

 2.3 安装配置zooekeeper集群(在sunshine02上)

  a. 解压tar -zxvf zookeeper-3.4.5.tar.gz -C /home/linwentao/desktop/app   (后面自己路径可以自己定义)

  b. 修改配置

            cd /home/linwentao/desktop/app/zookeeper-3.4.5/conf/

            cp zoo_sample.cfg zoo.cfg

            vim zoo.cfg  修改:dataDir=/home/linwentao/desktop/app/zookeeper-3.4.5/tmp

                                              dataLogDir=/home/zookeeper/logs

            在最后添加:

           server.1=sunshine02:2888:3888

           server.2=sunshine03:2888:3888

           server.3=sunshine04:2888:3888

          保存退出

         创建一个tmp和logs文件夹

          mkdir /home/linwentao/desktop/app/zookeeper-3.4.5/tmp

          mkdir /home/linwentao/desktop/app/zookeeper-3.4.5/logs

           创建一个空文件

           touch /home/linwentao/desktop/app/zookeeper-3.4.5/tmp/myid

           向该文件写入ID 

            echo 1 > /home/linwentao/desktop/app/zookeeper-3.4.5/tmp/myid

 c. 将配置好的zookeeper拷贝到其他节点(sunshine03,sunshine04)

    scp -r /home/linwentao/desktop/app/zookeeper-3.4.5/  sunshine03:/home/linwentao/desktop/app/

    scp -r /home/linwentao/desktop/app/zookeeper-3.4.5/  sunshine04:/home/linwentao/desktop/app/

    注意:必须修改sunshine03、sunshine04 里面的myid的值(对应值为前面配置zoo.cfg最后server后面的数值)

    sunshine03-----2        sunshine04----3

2.4 安装hadoop群集

  a. 先对一台进行安装,然后进行复制或传输即可

  b .修改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>/home/linwentao/desktop/app/hadoop-2.4.1/tmp</value>

            </property>

            <!-- 指定zookeeper地址 -->

             <property>

                                <name>ha.zookeeper.quorum</name>

                               <value>sunshine02:2181,sunshine03:2181,sunshine04:2181</value> 

                </property>

  </configuration>

   c. 修改hdfs-site.xml

          <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>sunshine02:9000</value>

                  </property>

                 <!-- nn1的http通信地址 -->

                 <property>

                              <name>dfs.namenode.http-address.ns1.nn1</name>

                            <value>sunshine02:50070</value>

                 </property>

                  <!-- nn2的RPC通信地址 -->

                  <property>

                           <name>dfs.namenode.rpc-address.ns1.nn2</name>

                          <value>sunshine03:9000</value>

                    </property>

                 <!-- nn2的http通信地址 -->

                <property>

                           <name>dfs.namenode.http-address.ns1.nn2</name>

                             <value>sunshine03:50070</value>

                </property>

              <!-- 指定NameNode的元数据在JournalNode上的存放位置 -->

              <property>

                      <name>dfs.namenode.shared.edits.dir</name>


                     <value>qjournal://sunshine02:8485;sunshine03:8485;sunshine04:8485/ns1</value>  

              </property>

             <!-- 指定JournalNode在本地磁盘存放数据的位置 -->

             <property>

                        <name>dfs.journalnode.edits.dir</name>

                         <value>/home/linwentao/desktop/app/hadoop-2.4.1/journaldata</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>/home/root/.ssh/id_rsa</value>

                    </property>

                   <!-- 配置sshfence隔离机制超时时间 -->

                   <property>

                                     <name>dfs.ha.fencing.ssh.connect-timeout</name>

                                    <value>30000</value>

                     </property>

       </configuration>

 d.修改mapred-site.xml

             <configuration>

                            <!-- 指定mr框架为yarn方式 -->

                            <property>

                                        <name>mapreduce.framework.name</name>

                                        <value>yarn</value>

                                </property>

            </configuration>

e.修改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>sunshine02</value>

                                           </property>

                                            <property>

                                                      <name>yarn.resourcemanager.hostname.rm2</name>

                                                      <value>sunshine03</value>

                                            </property>

                                           <!-- 指定zk集群地址 -->

                                     <property>

                                              <name>yarn.resourcemanager.zk-address</name>

                                               <value>sunshine02:2181,sunshine03:2181,sunshine04:2181</value>

                                      </property>

                                      <property>

                                                  <name>yarn.nodemanager.aux-services</name>

                                                  <value>mapreduce_shuffle</value>

                                       </property>

             </configuration>

  f .修改slaves(slaves是指定子节点的位置,因为要在sunshine02上启动HDFS、在sunshine03启动yarn,所以sunshine02上的slaves文件指定的是      datanode的位置,sunshine03上的slaves文件指定的是nodemanager的位置)

      sunshine02   : sunshine02、sunshine03、sunshine04

      sunshine03   : sunshine02、sunshine03、sunshine04

三:启动操作(严格按照下面的步骤)

   3.1 启动zookeeper集群(分别在sunshine02、sunshine03、sunshine04上启动zk)

             cd /home/linwentao/desktop/app/zookeeper-3.4.5/bin/

             ./zkServer.sh start

           #查看状态:一个leader,两个follower

           ./zkServer.sh status

 3.2 启动journalnode(分别在在sunshine02、sunshine03、sunshine04上执行)

                   cd /home/linwentao/desktop/app/hadoop-2.4.1

                  sbin/hadoop-daemon.sh start journalnode

     #运行jps命令检验,sunshine02、sunshine03、sunshine04上多了JournalNode进程

3.3 格式化HDFS

      #在weekend01上执行命令: hdfs namenode -format

      #格式化后会在根据core-site.xml中的hadoop.tmp.dir配置生成个文件,这里我配  置的是/home/linwentao/desktop/app/hadoop-                         2.4.1/ tmp,然后将/home/linwentao/desktop/app/hadoop-2.4.1/ tmp拷贝到sunshine03的/weekend/hadoop-2.4.1/下。

              scp -r tmp/  sunshine03:/home/linwentao/desktop/app/hadoop-2.4.1/

3.4 格式化ZKFC(在sunshine02上执行即可)

            hdfs zkfc -formatZK

3.5 启动HDFS(在sunshine02上执行)

          start-dfs.sh

3.6 启动YARN(可以在sunshine02、sunshine03、sunshine04其中一台开,建议在sunshine04, 为把namenode和resourcemanager分开是因为性能问题,因为他们都要占用大量资源,所以把他们分开了,他们分开了就要分别在不同的机器上启动)

四:验证

 http://192.168.157.140:50070

NameNode 'sunshine02:9000' (active)

http://1192.168.157.141:50070

NameNode 'sunshine03:9000' (standby)

验证HDFS HA

首先向hdfs上传一个文件

hadoop fs -put /etc/profile /profile

hadoop fs -ls /

然后再kill掉active的NameNode

kill -9 <pid of NN>

通过浏览器访问:http://192.168.157.141:50070

NameNode 'sunshine03:9000' (active)

这个时候weekend02上的NameNode变成了active

在执行命令:

hadoop fs -ls /

刚才上传的文件依然存在!!!

手动启动那个挂掉的NameNode

sbin/hadoop-daemon.sh start namenode

通过浏览器访问:http://192.168.157.140:50070

NameNode 'sunshine02:9000' (standby)

OK,大功告成!!!

测试集群工作状态的一些指令 :

bin/hdfs dfsadmin -report 查看hdfs的各节点状态信息

bin/hdfs haadmin -getServiceState nn1 获取一个namenode节点的HA状态

sbin/hadoop-daemon.sh start namenode  单独启动一个namenode进程

./hadoop-daemon.sh start zkfc   单独启动一个zkfc进程

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

推荐阅读更多精彩内容