hadoop3.2.0集群搭建

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/LW_GHY/article/details/87862903

说明:本文以HDFS High Availability Using the Quorum Journal Manager模式搭建hadoop3.2.0集群。

环境

  • CentOS7、jdk1.8.0_181、zookeeper3.4.13、hadoop3.2.0
  • 虚拟机安装CentOS7三台,如下: 
hostname IP
storm 192.168.56.200
storm1 192.168.56.201
storm2 192.168.56.202

      注意:安装完成后关闭防火墙,执行如下命令:

             systemctl disable firewalld.service    systemctl stop firewalld.service      systemctl status firewalld.service

  • 安装jdk,省略安装步骤。
  • 三台虚拟机配置免密登录,省略配置过程。
配置免密登录可以使用如下命令:
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys

搭建zookeeper集群

  • 上传到虚拟机,解压后修改conf/zoo.cfg文件,配置如下:
tickTime=3000
initLimit=10
syncLimit=5
dataDir=/opt/zookeeper-3.4.13/data #此目录自由定义
clientPort=2181
server.1=storm:2888:3888
server.2=storm1:2888:3888
server.3=storm2:2888:3888

     在dataDir定义的目录下创建文件myid,把虚拟机各自对应的id存储到myid,即上面的server.id,每台虚拟机只存储自己的id值即可。

    启动zookeeper:bin/zkServer.sh start,在执行脚本的位置会生成一个日志文件zookeeper.out。

 搭建hadoop

<configuration>
        <property>
          <name>dfs.nameservices</name>
          <value>mycluster</value>
        </property>
        <property>
          <name>dfs.ha.namenodes.mycluster</name>
          <value>nn1,nn2, nn3</value>
        </property>
        <property>
          <name>dfs.namenode.rpc-address.mycluster.nn1</name>
          <value>storm:8020</value>
        </property>
        <property>
          <name>dfs.namenode.rpc-address.mycluster.nn2</name>
          <value>storm1:8020</value>
        </property>
        <property>
          <name>dfs.namenode.rpc-address.mycluster.nn3</name>
          <value>storm2:8020</value>
        </property>
        <property>
          <name>dfs.namenode.http-address.mycluster.nn1</name>
          <value>storm:9870</value>
        </property>
        <property>
          <name>dfs.namenode.http-address.mycluster.nn2</name>
          <value>storm1:9870</value>
        </property>
        <property>
          <name>dfs.namenode.http-address.mycluster.nn3</name>
          <value>storm2:9870</value>
        </property>
        <property>
        <property>
          <name>dfs.namenode.shared.edits.dir</name>
          <value>qjournal://storm:8485;storm1:8485;storm2:8485/mycluster</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</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>/dfs/jn/</value>
        </property>
        <property>
          <name>dfs.ha.automatic-failover.enabled</name>
          <value>true</value>
        </property>
        <property>
          <name>dfs.blocksize</name>
          <value>67108864</value>
        </property>
        <property>
          <name>dfs.replication</name>
          <value>1</value>
        </property>
</configuration>
  • core-site.xml文件配置如下:
<configuration>
        <property>
          <name>fs.defaultFS</name>
          <value>hdfs://mycluster</value>
        </property>
        <property>
          <name>ha.zookeeper.quorum</name>
          <value>storm:2181,storm1:2181,storm2:2181</value>
        </property>
        <property>
          <name>hadoop.tmp.dir</name>
          <value>/tmp/hadoop</value>
        </property>
        <property>
          <name>io.file.buffer.size</name>
          <value>131072</value>
        </property>
</configuration>
  • yarn-site.xml文件配置如下:
<configuration>
        <property>
          <name>yarn.resourcemanager.ha.enabled</name>
          <value>true</value>
        </property>
        <property>
          <name>yarn.resourcemanager.cluster-id</name>
          <value>mycluster</value>
        </property>
        <property>
          <name>yarn.resourcemanager.ha.rm-ids</name>
          <value>rm1,rm2</value>
        </property>
        <property>
          <name>yarn.resourcemanager.hostname.rm1</name>
          <value>storm</value>
        </property>
        <property>
          <name>yarn.resourcemanager.hostname.rm2</name>
          <value>storm1</value>
        </property>
        <property>
          <name>yarn.resourcemanager.webapp.address.rm1</name>
          <value>storm:8088</value>
        </property>
        <property>
          <name>yarn.resourcemanager.webapp.address.rm2</name>
          <value>storm1:8088</value>
        </property>
        <property>
          <name>hadoop.zk.address</name>
          <value>storm:2181,storm1:2181,storm2:2181</value>
        </property>
        <property>
          <name>yarn.nodemanager.aux-services</name>
          <value>mapreduce_shuffle</value>
        </property>
</configuration>
  • mapred-site.xml文件配置如下:
<configuration>
        <property>
          <name>mapreduce.framework.name</name>
          <value>yarn</value>
        </property>
</configuration>

    workers文件件配置如下:

storm
storm1
storm2
  • hadoop-env.sh文件配置如下:
export JAVA_HOME=添加自己的JAVA_HOME
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_JOURNALNODE_USER=root
export HDFS_ZKFC_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root

初始化与启动

三台虚拟机所有配置完成后,依次执行如下命令:

->  ../bin/hdfs --daemon start journalnode  # 三台虚拟机都执行该命令
执行完成后会在hadoop根目录下生成logs目录,查看执行日志

->  ../bin/hdfs namenode -format  # 在其中一台namenode虚拟机执行即可
执行完成后,在core-site.xml配置文件中hadoop.tmp.dir配置的目录会生成,把生成的目录复制到其他的namenode节点配置的位置。

->  ../bin/hdfs zkfc -formatZK   # 在其中一台namenode虚拟机执行即可
执行完成后,将在ZooKeeper中创建一个znode,自动故障转移系统存储数据。

->  ../sbin/start-dfs.sh
启动HDFS

->  ../sbin/start-yarn.sh
启动yarn

猜你喜欢

转载自blog.csdn.net/LW_GHY/article/details/87862903
今日推荐