Hadoop-2.7.3 HA高可用搭建

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fibonacci2015/article/details/70821244
0.zookeeper集群的搭
略,自行百度
1.hadoop2.7.3下载
2.tar 解压,mv到 /data,并将文件夹改为hadoop(也可以不改,看心情)。
3.vi /etc/profile 添加hadoop路径
export HADOOP_HOME=/data/hadoop
export PATH=$PATH :$HADOOP_HOME/bin
4.配置hadoop-env.sh
文件位置 /data/hadoop/etc/hadoop
export JAVA_HOME=/usr/java/jdk1.8.0_121
5.配置core-site.xml文件
<configuration>  
    <property>  
        <!--文件系统依赖的基本配置 -->  
        <name>hadoop.tmp.dir</name>  
        <value>/data/hadoop/tmp</value>  
    </property>  
    <property>  
        <!-- 指定hdfs的nameservice为nameservices,可以自行命名-->  
        <name>fs.defaultFS</name>  
        <value>hdfs://nameservice</value>  
    </property>  
    <property>  
        <name>io.file.buffer.size</name>  
        <value>4096/value>  
    </property>  
    <property>  
        <!-- 指定zookeeper。我搭了三台,服务器名分别是nb1,nb2,nb3 -->  
        <name>ha.zookeeper.quorum</name>  
        <value>nb1:2181,nb2:2181,nb3:2181</value>  
    </property>  
</configuration>
6.配置hdfs-site.xml文件
<configuration>  
    <property>  
        <!--指定hdfs的nameservice为nameservice,需要和core-site.xml中的保持一致 -->  
        <name>dfs.nameservices</name>  
        <value>nameservice</value>  
    </property>  
    <property>  
        <!-- nameservice下面有两个NameNode,分别是namenode1,namenode2,名字自己定义-->  
        <name>dfs.ha.namenodes.nameservice</name>  
        <value>namenode1,namenode2</value>  
    </property>  
    <property>  
        <!-- namenode1的RPC通信地址 -->  
        <name>dfs.namenode.rpc-address.nameservice.namenode1</name>  
        <value>nb2:9000</value>  
    </property>  
    <property>  
        <!-- namenode1的http通信地址 -->  
        <name>dfs.namenode.http-address.nameservice.namenode1</name>  
        <value>nb2:50070</value>  
    </property>  
    <property>  
        <!-- namenode2的RPC通信地址 -->  
        <name>dfs.namenode.rpc-address.nameservice.namenode2</name>  
        <value>nb1:9000</value>  
    </property>  
    <property>  
        <!-- namenode2的http通信地址 -->  
        <name>dfs.namenode.http-address.nameservice.namenode2</name>  
        <value>nb1:50070</value>  
    </property>  
    <property>  
        <!-- 指定NameNode的元数据在JournalNode上的存放位置-->  
        <name>dfs.namenode.shared.edits.dir</name>  
        <value>qjournal://nb1:8485;nb2:8485;nb3:8485/nameservice</value>  
    </property>  
    <property>  
        <!-- 指定JournalNode在本地磁盘存放数据的位置 -->  
        <name>dfs.journalnode.edits.dir</name>  
        <value>/home/hadoop/workspace/journal</value>  
    </property>  
    <property>  
        <!-- 开启NameNode故障时自动切换 -->  
        <name>dfs.ha.automatic-failover.enabled</name>  
        <value>true</value>  
    </property>  
    <property>  
        <!-- nameservice 需跟 core-site.xml一致 -->  
        <name>dfs.client.failover.proxy.provider.nameservice</name>  
        <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>  
    </property>  
    <property>  
        <!-- 配置隔离机制 -->  
        <name>dfs.ha.fencing.methods</name>  
        <value>sshfence</value>  
    </property>  
    <property>  
        <!-- 使用隔离机制时需要ssh免登陆。集群间必须ssh免登录,方法自行百度 -->  
        <name>dfs.ha.fencing.ssh.private-key-files</name>  
        <value>/root/.ssh/id_rsa</value>  
    </property>  
    <!-- 以下都是正经配置 -->  
    <property>  
        <!-- replication 是数据副本数量,默认为3,salve少于3台就会报错 -->  
        <name>dfs.replication</name>  
        <value>2</value>  
    </property>  
    <property>  
        <name>dfs.namenode.name.dir</name>  
        <value>file:/data/hadoop/hdfs/name</value>  
        </property>  
    <property>  
        <name>dfs.datanode.data.dir</name>  
        <value>file:/data/hadoop/hdfs/data</value>  
    </property>  
</configuration>  
8.配置mapred-site.xml文件
修改Hadoop中MapReduce的配置文件,配置的是JobTracker的地址和端口。
<configuration>  
    <property>  
        <name>mapreduce.framework.name</name>  
        <value>yarn</value>  
    </property>  
    <property>  
        <name>mapreduce.jobhistory.address</name>  
        <value>nb2:10020</value>  
    </property>  
    <property>  
        <name>mapreduce.jobhistory.address</name>  
        <value>nb2:19888</value>  
    </property>  
</configuration>
配置yarn-site.xml
<configuration>  
    <property>  
        <!-- 设置nodemanager 总内存大小为3G -->  
        <name>yarn.nodemanager.resource.memory-mb</name>  
        <value>3072</value>  
    </property>  
    <property>  
        <!--Container内存最大2G -->  
        <name>yarn.scheduler.maximum-allocation-mb</name>  
        <value>1024</value>  
    </property>  
    <property>  
        <name>yarn.nodemanager.resource.cpu-vcores</name>  
        <value>1</value>  
    </property>  
    <property>  
        <name>yarn.resourcemanager.hostname</name>  
        <value>nb2</value>  
    </property>  
    <property>  
        <name>yarn.nodemanager.aux-services</name>  
        <value>mapreduce_shuffle</value>  
    </property>  
    <property>  
        <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>  
        <value>org.apache.hadoop.mapred.ShuffleHandler</value>  
    </property>  
    <property>  
        <name>yarn.resourcemanager.address</name>  
        <value>nb2:8032</value>  
    </property>  
    <property>  
        <name>yarn.resourcemanager.scheduler.address</name>  
        <value>nb2:8030</value>  
    </property>  
    <property>  
        <name>yarn.resourcemanager.resource-tracker.address</name>  
        <value>nb2:8031</value>  
    </property>  
    <property>  
        <name>yarn.resourcemanager.admin.address</name>  
        <value>nb2:8033</value>  
    </property>  
    <property>  
        <name>yarn.resourcemanager.webapp.address</name>  
        <value>nb2:8088</value>  
    </property>  
    <property>  
        <name>yarn.log-aggregation-enable</name>  
        <value>true</value>  
    </property>  
    <property>  
        <name>yarn.nodemanager.remote-app-log-dir</name>  
        <value>/home/fibo/hadooplog/hadoop-yarn</value>  
    </property>  
    <property>  
        <name>yarn.log-aggregation.retain-seconds</name>  
        <value>86400</value>  
    </property>  
    <property>  
        <name>yarn.log.server.url</name>  
        <value>http://nb2:19888/jobhistory/logs/</value>  
    </property>  
</configuration>  
9.配置masters文件(这个也可以没有)
vi masters
添加本机ip
10.配置slaves文件
vi slaves
集群其他节点的ip
11.将hadoop移动到其他机子
scp -r /data/hadoop root@nb2:/data/
scp -r /data/hadoop root@nb3:/data/
12.格式化HDFS文件系统
hdfs zkfc -formatZK 格式化zkfc,让在zookeeper中生成ha节点
(注意,这条命令最好手动输入,直接copy执行有可能会有问题,注意短横线)
hadoop namenode -format
hdfs namenode -format
13.启动hadoop
集群启动
启动journalnode集群 在nb1上执行如下命令完成JournalNode集群的启动
hadoop-daemons.sh start journalnode
格式化hdfs,执行一次
hadoop namenode -format
格式化zkfc,让在zookeeper中生成ha节点 在nb1上执行如下命令,完成格式化,执行一次
hdfs zkfc -formatZK
首先在nb1上启动active节点,在nb1上执行如下命令
hadoop-daemon.sh start namenode
在mast2上同步namenode的数据,同时启动standby的namenod,命令如下
#把NameNode的数据同步到mast2上
hdfs namenode -bootstrapStandby
#启动mast2上的namenode作为standby
hadoop-daemon.sh start namenode
启动datanode 在mast1上执行如下命令
hadoop-daemons.sh start datanode
启动yarn 在作为资源管理器上的机器上启动
start-yarn.sh
启动ZKFC 在mast1上执行如下命令,完成ZKFC的启动
hadoop-daemons.sh start zkfc
14.关闭系统
stop-dfs.sh
stop-yarn.sh
15.zookeeper
1.zkCli.sh 
2.ls /

猜你喜欢

转载自blog.csdn.net/fibonacci2015/article/details/70821244