hadoop集群和HA搭建

来源:互联网 发布:沙钢网络培训教育学院 编辑:程序博客网 时间:2024/05/22 08:24

一、搭建集群[hdfs/yarn]

1、规划

1.1 基本配置

java14 java15 java16 192.168.17.100 192.168.17.101 192.168.17.102 1 core 1 core 1 core 2G 1G 1.5G 20G 20G 20G

1.2 角色分配

java14 java15 java16 NameNode DataNode DataNode DataNode SecondaryNameNode ResourceManager NodeManager NodeManager NodeManager HistoryServer

2、 环境准备

2.1 克隆主机

2.2 修改各自主机名和IP地址

2.3 创建普通用户,名称和密码与第一台保持一致[jerry:123456]

2.4 实现通过主机名互访

2.5 关闭防火墙

3、时间同步

a.互联网中的服务器进行时间同步[root@java16 jerry]# ntpdate cn.pool.ntp.orgb.在集群中确定一台,然后其他服务器与这台进行时间同步【推荐】[三台服务器]#date -R --检查当前系统的时区[root@java14 ~]# date -Rln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

3.1 选择java14作为时间服务器,那么需要在该机器中安装ntp服务器软件

        [root@java14 ~]# rpm -qa | grep ntp

3.2 修改ntp服务器的配置

[root@java14 ~]# vi /etc/ntp.conf * 1.1)文件中添加如下内容restrict [本地的NAT子网IP] mask 255.255.255.0 nomodify notrap* 1.2)注释以下三行内容#server 0.centos.pool.ntp.org#server 1.centos.pool.ntp.org#server 2.centos.pool.ntp.org* 1.3)去掉这个两行前面的#server  127.127.1.0 # local clockfudge   127.127.1.0 stratum 10

3.3 配置如下内容,保证BIOS与系统时间同步

## 查看/etc/sysconfig/ntpd内容[hadoop@hadoop-master opt]$ cat /etc/sysconfig/ntpd    SYNC_HWCLOCK=yes ##添加的内容OPTIONS="-u ntp:ntp -p /var/run/ntpd.pid -g"

3.4 启动java14中的时间服务器

[root@java14 ~]# service ntpd startStarting ntpd: ##查看状态[root@java14 ~]# service ntpd statusntpd (pid  1972) is running...

3.5 在java15和java16中通过ntpdate命令与java14进行定时同步

##添加定时任务敲命令crontab -e*/10 * * * * /usr/sbin/ntpdate java14.zhanghao.com 

4、部署分布式

4.1 将搭建的伪分布式中的数据清空

    data:目录中的数据全部清空    logs:日志文件清空    share/hadoop:帮助文档删除

4.2 配置HDFS集群

a)配置NameNode地址:core-site.xml文件中    <property>        <name>fs.defaultFS</name>        <value>hdfs://java14.zhanghao.com:8020</value>    </property>    <property>        <name>hadoop.tmp.dir</name>        <value>/opt/modules/hadoop-2.5.0/data</value>    </property> b) 配置DataNode地址:slaves    java14.zhanghao.com    java15.zhanghao.com    java16.zhanghao.comc) 配置SecondaryNameNode地址:在hdfs-site.xml文件中配置    <property>        <name>dfs.replication</name>        <value>3</value>    </property>    <property>        <name>dfs.namenode.secondary.http-address</name>        <value>java15.zhanghao.com:50090</value>    </property>e)将配置好的文件分发到其他服务器中[jerry@java14 modules]$ scp -r hadoop-2.5.0/ java15:/opt/modules/f) 启动HDFS文件    格式化:[jerry@java14 hadoop-2.5.0]$ ./bin/hdfs namenode -format    [jerry@java14 hadoop-2.5.0]$ ./sbin/hadoop-daemon.sh start namenode    [jerry@java14 hadoop-2.5.0]$ ./sbin/hadoop-daemon.sh start datanode    [jerry@java15 hadoop-2.5.0]$ ./sbin/hadoop-daemon.sh start datanode    [jerry@java15 hadoop-2.5.0]$ ./sbin/hadoop-daemon.sh start secondarynamenode    [jerry@java16 hadoop-2.5.0]$ ./sbin/hadoop-daemon.sh start datanode 测试:    [jerry@java16 hadoop-2.5.0]$ ./bin/hdfs  dfs -put hadoop-2.5.0.tar.gz  /hadoop-2.5.0.tar.gz

4.3 搭建YARN平台

a) 在yarn-site.xml文件中添加配置,指定resourcemanager运行的服务器地址<property>    <name>yarn.resourcemanager.hostname</name>    <value>java16.zhanghao.com</value></property>b) 配置historyserver,在mapred-site.xml文件中配置<property>    <name>mapreduce.jobhistory.address</name>    <value>java16.zhanghao.com:10020</value></property><property>    <name>mapreduce.jobhistory.webapp.address</name>    <value>java16.zhanghao.com:19888</value></property>c) 将修改后的配置文件分发到其他服务器中[jerry@java14 hadoop-2.5.0]$ scp -r etc/hadoop/yarn-site.xml java15:/opt/modules/hadoop-2.5.0/etc/hadoop/[jerry@java14 hadoop-2.5.0]$ scp -r etc/hadoop/mapred-site.xml java15:/opt/modules/hadoop-2.5.0/etc/hadoop/[jerry@java14 hadoop-2.5.0]$ scp -r etc/hadoop/yarn-site.xml java16:/opt/modules/hadoop-2.5.0/etc/hadoop/ [jerry@java14 hadoop-2.5.0]$ scp -r etc/hadoop/mapred-site.xml java16:/opt/modules/hadoop-2.5.0/etc/hadoop/c) 启动服务器[jerry@java14 hadoop-2.5.0]$ ./sbin/yarn-daemon.sh start nodemanager[jerry@java15 hadoop-2.5.0]$ ./sbin/yarn-daemon.sh start nodemanager[jerry@java16 hadoop-2.5.0]$ ./sbin/yarn-daemon.sh start resourcemanager[jerry@java16 hadoop-2.5.0]$ ./sbin/mr-jobhistory-daemon.sh start historyserver各个服务器启动的进程有:[jerry@java14 hadoop-2.5.0]$ jps4799 NodeManager3796 DataNode3709 NameNode4821 Jps[jerry@java15 hadoop-2.5.0]$ jps6555 NodeManager6711 Jps5452 DataNode5560 SecondaryNameNode[jerry@java16 hadoop-2.5.0]$ jps5918 DataNode7652 Jps7210 ResourceManager7466 NodeManager7615 JobHistoryServer

二、HDFS的HA方案[High Availability]

通过备份实现HAa.冷备份:手动切换b.热备份:自动切换High Availability With QJM:通过日志服务实现High Availability With NFS:通过网络文件实现
1) hdfs-site.xml     <property>      <name>dfs.nameservices</name>      <value>mycluster</value>    </property>    <property>      <name>dfs.ha.namenodes.mycluster</name>      <value>nn1,nn2</value>    </property>    <property>      <name>dfs.namenode.rpc-address.mycluster.nn1</name>      <value>java14.zhanghao.com:8020</value>    </property>    <property>      <name>dfs.namenode.rpc-address.mycluster.nn2</name>      <value>java15.zhanghao.com:8020</value>    </property>    <property>      <name>dfs.namenode.http-address.mycluster.nn1</name>      <value>java14.zhanghao.com:50070</value>    </property>    <property>      <name>dfs.namenode.http-address.mycluster.nn2</name>      <value>java15.zhanghao.com:50070</value>    </property>    <property>      <name>dfs.namenode.shared.edits.dir</name>      <value>qjournal://java14.zhanghao.com:8485;java15.zhanghao.com:8485;java16.zhanghao.com:8485/mycluster</value>    </property>    ##通过代理访问active状态的namenode    <property>      <name>dfs.client.failover.proxy.provider.mycluster</name>      <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>    </property>    ##两个namenode之间的隔离    <property>      <name>dfs.ha.fencing.methods</name>      <value>sshfence</value>    </property>    <property>      <name>dfs.ha.fencing.ssh.private-key-files</name>      <value>/home/jerry/.ssh/id_rsa</value>    </property>2) core-site.xml文件    ##访问入口    <property>      <name>fs.defaultFS</name>      <value>hdfs://mycluster</value>    </property>    ##journalnode数据存储的位置    <property>      <name>dfs.journalnode.edits.dir</name>      <value>/opt/modules/hadoop-2.5.0/data/jn</value>    </property>3) 将java14修改的配置文件分发到 java15,java16对应目录中    [jerry@java14 hadoop-2.5.0]$ scp -r etc/hadoop/core-site.xml etc/hadoop/hdfs-site.xml java15:/opt/modules/hadoop-2.5.0/etc/hadoop/    [jerry@java14 hadoop-2.5.0]$ scp -r etc/hadoop/core-site.xml etc/hadoop/hdfs-site.xml java16:/opt/modules/hadoop-2.5.0/etc/hadoop/4) 启动step1:分别在java14,java15,java16服务器上启动journalnode进程    [jerry@java14 hadoop-2.5.0]$ ./sbin/hadoop-daemon.sh start journalnode    [jerry@java15 hadoop-2.5.0]$ ./sbin/hadoop-daemon.sh start journalnode    [jerry@java16 hadoop-2.5.0]$ ./sbin/hadoop-daemon.sh start journalnodeStep2:在[nn1]上,对其进行格式化,并启动:    [jerry@java14 hadoop-2.5.0]$ ./bin/hdfs namenode -format    [jerry@java14 hadoop-2.5.0]$ ./sbin/hadoop-daemon.sh start namenodeStep3:在[nn2]上,同步nn1的元数据信息:    $ ./bin/hdfs namenode -bootstrapStandbyStep4:启动[nn2]:    $ ./sbin/hadoop-daemon.sh start namenodeStep5:将[nn1]切换为Active    $ ./bin/hdfs haadmin -transitionToActive nn1Step6:在[nn1]上,启动所有datanode    $ ./sbin/hadoop-daemons.sh start datanode

补充:实现SSh协议的免秘钥登录过程http://blog.csdn.net/gsnumen/article/details/7293266[参考][jerry@java14 hadoop-2.5.0]$ ssh java15jerry@java15's password: Last login:  2017 from java14.zhanghao.com[jerry@java15 ~]$ ls1.生成公钥私钥对[jerry@java14 hadoop-2.5.0]$ ssh-keygen -t rsa2.拷贝公钥给对方[jerry@java14 .ssh]$ ssh-copy-id jerry@java15在java14-》java14,java14-》java15、java14-》java16实现免秘钥验证[jerry@java14 .ssh]$ ssh-copy-id jerry@java14[jerry@java14 .ssh]$ ssh-copy-id jerry@java15[jerry@java14 .ssh]$ ssh-copy-id jerry@java16  
原创粉丝点击