zoukankan      html  css  js  c++  java
  • hadoop集群篇--从0到1搭建hadoop集群

    一。前述

    本来有套好好的集群,可是不知道为什么虚拟机镜像文件损坏,结果导致集群不能用。所以不得不重新搭套集群,借此机会顺便再重新搭套吧,顺便提醒一句大家,自己虚拟机的集群一定要及时做好快照,最好装完每个东西后记得拍摄快照。要不搞工具真的很浪费时间,时间一定要用在刀刃上。废话不多说,开始准备环境搭建,本集群搭建完全基于企业思想,所以生产集群亦可以参照此搭建。

    二。集群规划

     三。配置

    1.配置集群节点之间免密操作。

    因为在node01(namenode)节点要启动datanode节点,所以需要配置node01到三台datanode节点的免密操作

     因为两个namenode之间需要互相切换降低对方的级别所以node01,node02之间需要进行免密操作。

    具体步骤如下:

    ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
    cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

    scp id_dsa.pub  root@node04:`pwd`/node01.pub

    cat node01.pub >> ~/.ssh/authorized_keys

    关闭防火墙:

    sudo systemctl stop firewalld.service && sudo systemctl disable firewalld.service

    2.上传hadoop安装包到某一节点上,进行配置

    假设配置在此目录下

    第一步:配置hadoop-env.sh 

    使用命令echo $JAVA_HOME 确定jd目录。

    配置java环境。

    export JAVA_HOME=/usr/java/jdk1.7.0_67

    第二步:配置hdfs-site.xml

    <property>
      <name>dfs.nameservices</name>
      <value>mycluster</value>//配置集群的别名,所以当企业中多套集群时,可以使用此别名分开
    </property>
    <property>
      <name>dfs.ha.namenodes.mycluster</name>//配置两个namenode的逻辑名称
      <value>nn1,nn2</value>
    </property>
    <property>
      <name>dfs.namenode.rpc-address.mycluster.nn1</name>//配置两个namenode的真正物理节点和rpc通信端口
      <value>node01:8020</value>
    </property>
    <property>
      <name>dfs.namenode.rpc-address.mycluster.nn2</name>//配置两个namenode的真正物理节点rpc通信端口
      <value>node02:8020</value>
    </property>
    <property>
      <name>dfs.namenode.http-address.mycluster.nn1</name>//配置两个namenode的真正物理节点http通信端口
      <value>node01:50070</value>
    </property>
    <property>
      <name>dfs.namenode.http-address.mycluster.nn2</name>//配置两个namenode的真正物理节点http通信端口
      <value>node02:50070</value>
    </property>

     <property>
      <name>dfs.namenode.shared.edits.dir</name>
      <value>qjournal://node01:8485;node02:8485;node03:8485/mycluster</value>//配置三个journalnode的物理地址
    </property>

    <property>
      <name>dfs.journalnode.edits.dir</name>//配置journalnode共享edits的目录
      <value>/var/sxt/hadoop/ha/jn</value>
    </property>


    <property>
      <name>dfs.client.failover.proxy.provider.mycluster</name>
      <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>//配置zkfc实现的真正类
    </property>
    <property>
      <name>dfs.ha.fencing.methods</name>//配置zkfc隔离机制
      <value>sshfence</value>
    </property>
    <property>
      <name>dfs.ha.fencing.ssh.private-key-files</name>//配置zkfc切换对方namenode时所使用的方式
      <value>/root/.ssh/id_dsa</value>
    </property>
    <property>
       <name>dfs.ha.automatic-failover.enabled</name>/配置是否自动开启zkfc切换
       <value>true</value>
     </property>
    第三步:配置core-site.xml

     <property>
      <name>fs.defaultFS</name>
      <value>hdfs://mycluster</value>//配置集群的别名
    </property>

    <property>
       <name>ha.zookeeper.quorum</name>
       <value>node02:2181,node03:2181,node04:2181</value>//配置和zookeep通信地址和端口
     </property>

    <property>
       <name>hadoop.tmp.dir</name>//配置hadoop元数据的存放目录
       <value>/var/sxt/hadoop-2.6/ha</value>
     </property>
    第四步:配置slaves

    即datanode节点

    对应datanode节点的host或者ip

    第五步:分发配置到其他节点相同目录

    scp -r hadoop-2.6.5 root@node04:`pwd`

    第六步:配置zookeeeer集群

    同样上传到某一节点 然后配置

     1.cp zoo_sample.cfg zoo.cfg先改名 zookeeper集群识别zoo.cfg文件

    2.配置conf/zoo.cfg
    dataDir=/var/sxt/zk
    server.1=node02:2888:3888
    server.2=node03:2888:3888
    server.3=node04:2888:3888
    3.配置集群节点识别

    mkdir -p /var/sxt/zk
    echo 1 > myid     //数字根据节点规划

    4.配置全局环境变量

    export ZOOKEEPER=/opt/soft/zookeeper-3.4.6
    export PATH=$PATH:$JAVA_HOME/bin:$ZOOKEEPER/bin

    5.启动集群

    分别启动三台节点,然后查看状态

     zkServer.sh start
     zkServer.sh statu

    启动成功!!!

     第七步:启动集群顺序(重要!!!)

       1.先启动journalnode

         hadoop-daemon.sh start journalnode

       2.在两个namenode节点创建/var/sxt/hadoop-2.6/ha 即hadoop.tmp.dir的目录存放元数据(默认会创建,不过最好还是手工创建吧,并且里面一定是干净目录,无任何东西

       3.在其中一台namenode节点格式化

        hdfs namenode -format

      4.然后启动namenode!!!注意这个一定要先启动,然后再在另一台namenode同步,为了是让里面有数据

    hadoop-daemon.sh start namenode

      5.然后在另一台namenode节点执行同步hdfs namenode  -bootstrapStandby

    6.在主节点启动集群

    start-dfs.sh

    7.向zookeeper注册active节点

    hdfs zkfc -formatZK

    8.启动zkFC负责切换

    hadoop-daemon.sh start zkfc

    至此,集群启动成功启动成功!!

    9.web-ui验证

    10.下一次启动时,只需要先启动zookeper,然后在namenode的管理节点启动start-dfs.sh即可 !!!

    最后,别忘拍摄快照哦!!

    持续更新中。。。。,欢迎大家关注我的公众号LHWorld.

  • 相关阅读:
    为什么说性别字段不适合做索引?
    过程数据的记录(事务问题)
    两个系统操作同一条表记录涉及的事务的坑(依护系统)
    mybatis插件自动生成代码报错。
    ORACLE使用plsql和其他工具进行表结构和数据迁移
    ORACLE获取建表SQL
    学习英语的技巧
    Oracle的用户管理
    Jmeter做压力测试
    强烈推荐(原创亲测)!!!Fiddler抓取https设置详解(图文)
  • 原文地址:https://www.cnblogs.com/LHWorldBlog/p/8232935.html
Copyright © 2011-2022 走看看