• 史上最完整Hadoop2.x完全分布式安装部署小白也能学会


    一、环境要求:

    1、        虚拟机安装并设置网络;

    2、        修改主机地址映射;

    3、        必备软件:Jdk、Development Tools   Development Libraries gcc c++等已安装;

    4、        修改windows主机C:\Windows\System32\drivers\etc\hosts

    在hosts文件中添加虚拟机中的主机地址映射如下:

    Ip地址             Linux主机名

    5、         配置四台主机免密登录,两台namenode互相免密,namenode节点均免密登录至其他节点。

    二、节点规划

     

    NN

    DN

    ZK

    ZKFC

    JN

    RM

    NM

    V1

    Y

     

    Y

    Y

     

    Y

     

    V2

    Y

    Y

    Y

    Y

    Y

     

    Y

    V3

     

    Y

    Y

     

    Y

     

    Y

    V4

     

    Y

     

     

    Y

     

    Y

    三、配置步骤:

      1、每台Linux主机都要修改/etc/profile,添加Hadoop环境变量

      export HADOOP_HOME=/usr/software/hadoop-2.7.1

      export PATH=$PATH:$HADOOP_HOME/bin

         修改之后,source /etc/profile          使系统变量生效

      2、配置HADOOP守护进程,这部分主要处理给出的配置文件中设置一些重要参数,配置好后,将文件拷贝至其他需要安装hadoop的主机。

      etc/hadoop/core-site.xml

      <configuration>

          <property>

              <name>fs.defaultFS</name>

              <value>hdfs://V1:9000</value>

          </property>

          <property>

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

              <value>V1:2181,V2:2181,V3:2181</value>

          </property>

          <property>

              <name>hadoop.tmp.dir</name>

              <value>/opt/hadoop_data/tmp</value>

      (注释:要手动创建目录)

          </property>

          <property>

              <name>io.file.buffer.size</name>

              <value>131702</value>

          </property>

      </configuration>

            解释:

           Fs.default,使用逻辑路径,避免双namenode切换带来路径不一致问题

           Hadoop.tmp.dir,hadoop文件系统依赖的基础配置,许多路径均依赖它,若hdfs.site.xml中未配置namenode和datanode的存放位置,默认就存放在此配置路径。

           ha.zookeeper.quorum,指定zookeeper服务所在主机及端口号

           io.file.buffer.size,在序列化文件中使用的读/写缓冲区大小

          

      l  etc/hadoop/hdfs-site.xml

      <configuration>

        <property>

          <name>dfs.replication</name>

          <value>2</value>

        </property>

        <property>

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

          <value>/opt/hadoop_data/namenode</value>

      (注释:要手动创建目录)

        </property>

        <property>

          <name>dfs.datanode.data.dir</name>

          <value>/opt/hadoop_data/datanode</value>

      (注释:要手动创建目录)

        </property> 

        <property>

          <name>dfs.nameservices</name>

          <value>dy</value>

        </property>

        <property>

          <name>dfs.ha.namenodes.dy</name>

          <value>V1,V2</value>

        </property>

        <property>

          <name>dfs.namenode.rpc-address.dy.V1</name>

          <value>V1:9000</value>

        </property>

        <property>

          <name>dfs.namenode.rpc-address.dy.V2</name>

          <value>V2:9000</value>

        </property>

        <property>

          <name>dfs.namenode.http-address.dy.V1</name>

          <value>V1:50070</value>

        </property>

        <property>

          <name>dfs.namenode.http-address.dy.V2</name>

          <value>V2:50070</value>

        </property>

        <property>

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

          <value>qjournal://V2:8485;V3:8485;V4:8485/dy</value>

        </property>

        <property>

          <name>dfs.client.failover.proxy.provider.dy</name>

         <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>

        </property>

        <property>

          <name>dfs.ha.fencing.methods</name>

          <value>sshfence</value>

        </property>

        <property>

          <name>dfs.ha.fencing.ssh.private-key-files</name>

          <value>/root/.ssh/id_rsa</value>

        </property>

        <property>

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

          <value>/opt/hadoop_data/journal</value>

        </property>

      </configuration>

      解释:

          dfs.replication是HDFS文件的副本数,不可超过datanode的个数

          dfs.namenode.name.dor     namenode本地文件系统存放名字空间和传输日志的路径

          dfs.datanode.data.dir          datanode的数据存放位置

          dfs.nameservices         命名空间的逻辑名称,

          dfs.ha.namenodes           命名空间中所有namenode的唯一标识名称,可以配置多个,使用逗号分割。该名称让datanode知道每个集群的所有namenode。

          dfs.namenode.rpc-address.[nameservice ID].[namenode ID]        每个namenode监听的RPC地址

      dfs.namenode.http-address. [nameservice ID].[namenode ID]           每个namenode监听的http地址

      dfs.namenode.shared.edits.dir         是namenode读写journal node组的URI,通过这个URI,namenode可以读写edit log内容。URI的格式"qjournal://host1:port1;host2:port2;host3:port3/journalId”.

      dfs.client.failover.proxy.provider.[nameservice ID]             这里配置HDFS客户端连接到Active namenode的一个java类. 

      dfs.ha.fencing.methods           配置active namenode出错时的处理类.当active namenode出错时,一般需要关闭该进程.处理方式可以是ssh也可以是shell.推荐使用ssh! 
      fs.journalnode.edits.dir           这是journalnode进程保持逻辑状态的路径.这是在linux服务器文件的绝对路径.

      etc/hadoop/yarn-site.xml

    <configuration>

      <property>

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

        <value>V1</value>

      </property>

      <property>

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

        <value>mapreduce_shuffle</value>

      </property>

    </configuration>

    解释:

    yarn.resourcemanager.hostname        指的是运行ResourceManager机器所在的节点. 
    yarn.nodemanager.aux-services   在hadoop2.2.0版本中mapreduce_shuffle,一定要看清楚.

    etc/hadoop/mapred-site.xml

    <configuration>

      <property>

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

        <value>yarn</value>

      </property>

    </configuration>

                  解释:

           mapreduce.framework.name 指的是使用yarn运行mapreduce程序.

    etc/hadoop/slaves

    V2

    V3

    V4

    解释:

        指定hdfs中的datanode节点

    etc/hadoop/hadoop-env.sh

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

    解释:

        hadoop集群格式化以及启动时会到次目录下寻找环境变量,必须配置。

    将相关配置文件拷贝至其他主机。

           3、配置zookeeper,

           解压zookeeper-3.4.6.tar.gz;

           拷贝一份配置文件 cp zoo_sample.cfg 

           (1)在所有zookeeper节点中的zoo.cfg文件作如下配置:

    l  zoo.cfg

    修改dataDir=/opt/zookeeper(注释:要手动创建目录)

    server.1=V1:2888:3888

    server.2=V2:2888:3888

    server.3=V3:2888:3888

    在所有zookeeper节点的dataDir(此处为/opt/zookeeper)目录中创建一个myid的文件,文件内容分别为1,2,3

    (2)配置/etc/profile,

    export ZOOKEEPER_HOME=/usr/software/zookeeper-3.4.6

    export PATH=$PATH:$ZOOKEEPER_HOME/bin

    将以上配置拷贝至其他zookeeper主机

    4、集群初始化操作

    (1)启动三个zookeeper:./zkServer.sh start

    (2)启动JournalNode集群:./hadoop-daemon.sh start journalnode

    (3)在其中一个namenode上格式化:./hdfs namenode -format

    (4)把刚刚格式化之后的元数据同步到另外一个namenode上

    a)启动刚刚格式化的namenode---- hadoop-daemon.sh start namenode;

    b)在没有格式化的namenode上执行:hdfs namenode –bootstrapStandby;

    c)启动第二个namenode;

    (5)在其中一个namenode上初始化zkfc:hdfs zkfc –formatZK

    解释:

    格式化ZooKeeper集群,目的是在ZooKeeper集群上建立HA的相应节点

    (6)停止上面节点:stop-dfs.sh

    (7)全面启动:start-all.sh

    注:zookeeper相关进程仍然需要手动开启

  • 相关阅读:
    Python学习--10 面向对象编程
    Python学习--09 模块
    Python学习--08函数式编程
    JSON的简单例子
    error: Error retrieving parent for item: No resource found that matches the given name 'Theme.AppCompat.Light'.
    Failed to create the Java Virtual Machine.问题的解决
    导入项目时Loading descriptor ...
    Tomcat Server Timeouts属性的设置
    Type mismatch: cannot convert from java.sql.PreparedStatement to com.mysql.jdbc.PreparedStatement
    MySQL的Incorrect string value错误
  • 原文地址:https://www.cnblogs.com/MrFee/p/4825278.html
Copyright © 2020-2023  润新知