一 、 Hadoop 集群架构设计

二 、 搭建集群

修改IP地址与hostname以及部署zookeeper、hadoop见上一篇博文《Hadoop 完全分布式搭建》。

三 、修改配置文件

修改nna上的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/zhihua/data</value>
    </property>

    <!-- 指定zookeeper地址 -->
    <property>
        <name>ha.zookeeper.quorum</name>
        <value>dn1:2181,dn2:2181,dn3:2181</value>
    </property>
    <property>
        <name>hadoop.proxyuser.zhihua.hosts</name>
        <value>*</value>
    </property>
    <property>
        <name>hadoop.proxyuser.zhihua.groups</name>
        <value>*</value>
    </property>
</configuration>

 

修改 hdfs-site.xml

<configuration>
<!--指定hdfs的nameservice为ns1,需要和core-site.xml中的保持一致 -->
    <property>
        <name>dfs.nameservices</name>
        <value>ns1</value>
    </property>
    <!-- ns1下面有两个NameNode,分别是nna,nns -->
    <property>
        <name>dfs.ha.namenodes.ns1</name>
        <value>nna,nns</value>
    </property>
    <!-- nna的RPC通信地址 -->
    <property>
        <name>dfs.namenode.rpc-address.ns1.nna</name>
        <value>nna:9000</value>
    </property>
    <!-- nna的http通信地址 -->
    <property>
        <name>dfs.namenode.http-address.ns1.nna</name>
        <value>nna:50070</value>
    </property>
    <!-- nns的RPC通信地址 -->
    <property>
        <name>dfs.namenode.rpc-address.ns1.nns</name>
        <value>nns:9000</value>
    </property>
    <!-- nns的http通信地址 -->
    <property>
        <name>dfs.namenode.http-address.ns1.nns</name>
        <value>nns:50070</value>
    </property>
    <!-- 指定NameNode的元数据在JournalNode上的存放位置 -->
    <property>
        <name>dfs.namenode.shared.edits.dir</name>
        <value>qjournal://dn1:8485;dn2:8485;dn3:8485/ns1</value>
    </property>
    <!-- 指定JournalNode在本地磁盘存放数据的位置 -->
    <property>
        <name>dfs.journalnode.edits.dir</name>
        <value>/home/zhihua/data/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隔离机制超时时间 -->
    <property>
        <name>dfs.ha.fencing.ssh.connect-timeout</name>
        <value>30000</value>
    </property>
    <property>
        <name>dfs.webhdfs.enabled</name>
        <value>true</value>
    </property>

</configuration>

 

修改 mapred-site.xml

<configuration>
<!-- 指定mr框架为yarn方式 -->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

 

修改 yarn-site.xml

 

<configuration>

<!-- Site specific YARN configuration properties -->
<!-- 开启RM高可用 -->
        <property>
           <name>yarn.resourcemanager.ha.enabled</name>
           <value>true</value>
        </property>
        <!-- 指定RM的cluster id -->
        <property>
           <name>yarn.resourcemanager.cluster-id</name>
           <value>cluster_id</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>nna</value>
        </property>
        <property>
           <name>yarn.resourcemanager.hostname.rm2</name>
           <value>nns</value>
        </property>
        <property>
        <name>yarn.resourcemanager.webapp.address.rm1</name>
        <value>nna:8088</value>
        </property>
        <property>
        <name>yarn.resourcemanager.webapp.address.rm2</name>
        <value>nns:8088</value>
        </property>
        <!-- 指定zk集群地址 -->
        <property>
           <name>yarn.resourcemanager.zk-address</name>
           <value>dn1:2181,dn2:2181,dn3:2181</value>
        </property>
        <property>
           <name>yarn.nodemanager.aux-services</name>
           <value>mapreduce_shuffle</value>
        </property>
</configuration>

 

分发配置文件

1 [zhihua@nna /soft/hadoop/etc]$scp -r hadoop zhihua@nns:/soft/hadoop/etc/
2 [zhihua@nna /soft/hadoop/etc]$scp -r hadoop zhihua@dn1:/soft/hadoop/etc/
3 [zhihua@nna /soft/hadoop/etc]$scp -r hadoop zhihua@dn2:/soft/hadoop/etc/
4 [zhihua@nna /soft/hadoop/etc]$scp -r hadoop zhihua@dn3:/soft/hadoop/etc/

三 、启动集群

3.1 格式化 Hadoop 集群

1 [zhihua@nna /soft/hadoop/etc]$hadoop namenode -format 

3.2 复制 Hadoop 临时目录到nns上

1 [zhihua@nna /home/zhihua]$scp -r data zhihua@nns:/home/zhihua/

3.3 启动zookeeper

1 [zhihua@dn1 /soft/zk/bin]$./zkServer.sh start 
2 [zhihua@dn2 /soft/zk/bin]$./zkServer.sh  start 
3 [zhihua@dn3 /soft/zk/bin]$./zkServer.sh  start 

3.4 启动 JournalNode 

1 [zhihua@nna /home/zhihua]$hadoop-daemons.sh start journalnode 

3.5 启动 HDFS 与 YARN 

1 [zhihua@nna /home/zhihua]$start-dfs.sh 
2 [zhihua@nna /home/zhihua]$start-yarn.sh 

3.6 启动 NNS上的ResourceManager

1 [zhihua@nns /soft/hadoop/etc/hadoop]$yarn-daemon.sh start resourcemanager

四 、 测试集群是否部署成功

检查nna上面的进程

检查nns 上面的进程

检查dn1-dn3上的进程

webUI检查集群是否正常

 

 

转载于:https://www.cnblogs.com/zhihua-he/p/10822496.html