HadoopHA3_搭建hadoop高可用

前言

中大型的hadoop集群,往往会通过CDH来统一安装,配置.
但是维持CDH本身就需要消耗系统资源,如果是小型集群,或者只是搭建测试环境,就需要手动搭建hadoop集群.
hadoop的设计本身,就具备着极强的的扩展性.所以搭建集群时,最耗时的是配置集群核心.
换言之,我们只要先将集群核心搭建完成,Hadoop集群的扩展也就不是问题
狭义上的核心其实只有2台机器:namenode和 resourtmanager,而且他们的配置文件可以完全相同.因此我们可以先在一台机器上将配置文件设定好,然后使用scp进行分发

环境 版本
linux centos_6.7
jdk 1.8.0_60
hadoop 2.7.1
zookeeper 3.4.7
mysql 5.6.26
hive 1.2.1-bin
hbase 1.2.1

流程

  1. 拟定整体架构
    就像角色扮演游戏,组团打副本之前必然要先分配好各自的任务
    这次我们使用6台机器搭建核心机群
hostname 功能
servicenode 时间同步服务器,yum源,备用NN和RM,mysql,hive-service
master1 namenode, 备用Hmaster
master2 resourcemanager, Hmaster
slave1 datanode, nodemanager, qjournal, zookeeper, regionservers
slave2 同slave1
slave3 同slave1

思路:
a. NN(namendoe)和RM(resourcemanager)工作负荷很大,最好独立
b. hbase集群中的hmaster工作负荷很小,考虑到hbase运行时不会增加RM的工作负荷,所以将Hmaster和RM配置在一起
c. 备用NN,RM的工作负荷很小.将mysql和hive的元数据服务放到servicenode上以均衡负载

  1. 配置基础环境
功能 语句
关闭防火墙并禁止开机自启
配置网络
配置时间同步的定时任务(注1) crontab -e
修改yum源

注1: 设置每小时同步一次的语句如下

01 */1 * * * /usr/sbin/ntpdate servicenode >> /root/time.txt 2&>1
#前五个以空格分隔的字段分别表示:分 时 日 月 周,*是通配符.他们决定了定时任务的执行时间
#之后就是任务主体的shell语句
#末尾的 2&>1 :2代表异常信息,该命令是将异常日志也重定向到日志位置
  1. ssh免密码登录
功能 语句
安装ssh客户端(注1) yum -y install openssh-clients.x86_64
启动服务(注2) service sshd restart
开机启动 chkconfig sshd on
生成秘钥(注3) /usr/bin/ssh-keygen
发送公钥 /usr/bin/ssh-copy-id (hostname)
远程登录 ssh (hostname)

主节点需要能ssh免密到所有节点
注1: centos mini版预装openssh和openssh_server,不过版本比较旧
只需要安装openssh_clients,其余的ssh环境会自动更新
注2: ssh对应的服务名是sshd
注3: 出现选项时,直接回车可以选择默认配置
keygen只需要运行一次,以后可以直接ssh-copy-id出去

  1. 安装jdk
功能 语句
上传 使用远程工具上传
解压 tar -xvf /software/jdk-8u60-linux-x64.gz -C /apps
修改环境变量(注1) vi /etc/profile
刷新环境变量 source /etc/profile

注1:具体配置如下

#shift+g转至文尾,然后追加
export JAVA_HOME=/apps/jdk1.8.0_60/
export PATH=$PATH:$JAVA_HOME/bin

注2:如果系统已安装低版本的jdk,需要先卸载(rpm -e -nodeps).

  1. 安装zookeeper
功能 语句
上传解压
修改并刷新环境变量
修改配置文件(注1) vi $ZOOKEEPER_HOME/conf/zoo.xml
记录本机id echo 1 > /apps/zookeeper-3.4.7/zkData/myid
分发zk到各节点 scp -r /apps/zookeeper-3.4.7 root@slave1:/apps
尝试启动 zkServer.sh start
查看是否启动 jps
查看主从 zkServer.sh status

注1:具体配置如下

# 日常的数据同步的时间,2s
tickTime=2000
# 重新选举后的同步时间,2s*10
initLimit=10
# 从发送询问,到被回应的等待时间,2s*5
syncLimit=5
# 设置数据存放的目录
# 该目录应该是已存在的,因为要把记录这本机id的mid文件放在此目录下
dataDir=/apps/zookeeper-3.4.7/zkData
# 服务所使用的端口
clientPort=2181
# 指定zoo的集群
# 第一个是数据同步的端口,第二个是选举的端口
server.1=slaver1:2888:3888
server.2=slaver2:2888:3888
server.3=slaver3:2888:3888
  1. 安装并配置hadoop
功能 语句
上传 使用远程工具上传
解压 tar -xvf /software/hadoop-2.7.1.tar.gz -C /apps
修改并刷新环境变量 HADOOP_HOME

之后就是修改配置文件了,除了core-site.xml, hdfs-site.xml, mapred-site.xml, yarn-site.xml这四大site.xml,还需要修改hadoop-env.sh和slavers
基本的配置参见<<HadoopHA3_hadoop高可用的配置文件>>
详细配置请参考官网(谷歌搜索hadoopHA就能找到官网了).

  1. 尝试启动hadoop

如果zookeeper正常启动,而且文件都配置完成,hadoopHA就算是初步搭建完成了
不出意外的话,我们可以输入以下指令启动起hadoop集群

功能 语句
格式化主namenode(注1) hdfs namenode -format
启动主namenode hadoop-daemon.sh start namenode
复制元数据到备用NN hdfs namenode -bootstrapStandby
在主NN上启动hdfs start-dfs.sh
在主RM上启动yarn start-yarn.sh

注1: 如果是将普通集群升级为高可用集群,原namenode不需要重新格式化
但是需要运行hdfs -initializeSharedEdits来公有日志文件

如果hdfs启动成功,可以从网页登录master1:50070和master2:50070来查看工作状态.
yarn启动成功,可以浏览master2:8090来查看yarn的工作状态;如果尝试浏览master1:8090,会自动跳转到master2:8090的页面

其他语句
单独启动datanode hadoop-daemon.sh start datanode
单独启动nodemanager yarn-daemon.sh start nodemanager
高可用的管理员命令 hdfs haadmin -help

系列文章

安装windows+linux双系统:https://blog.csdn.net/IAmListening/article/details/89741854
搭建时间同步服务器和yum源:https://blog.csdn.net/IAmListening/article/details/89765148
Hive的安装和相关异常:https://blog.csdn.net/IAmListening/article/details/89368823
安装hbase:https://blog.csdn.net/IAmListening/article/details/89765957

猜你喜欢

转载自blog.csdn.net/IAmListening/article/details/89765843