HadoopHA3_搭建hadoop高可用

前言

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

环境版本
linuxcentos_6.7
jdk1.8.0_60
hadoop2.7.1
zookeeper3.4.7
mysql5.6.26
hive1.2.1-bin
hbase1.2.1

流程

  1. 拟定整体架构
    就像角色扮演游戏,组团打副本之前必然要先分配好各自的任务
    这次我们使用6台机器搭建核心机群
hostname功能
servicenode时间同步服务器,yum源,备用NN和RM,mysql,hive-service
master1namenode, 备用Hmaster
master2resourcemanager, Hmaster
slave1datanode, 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
记录本机idecho 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集群

功能语句
启动云日志服务hadoop-daemons.sh start journalnode
格式化主namenode(注1)hdfs namenode -format
启动主namenodehadoop-daemon.sh start namenode
复制元数据到备用NNhdfs namenode -bootstrapStandby
在zk上注册hdfs zkfc -formatZK
在主NN上启动hdfsstart-dfs.sh
在主RM上启动yarnstart-yarn.sh

注1: 如果是将普通集群升级为高可用集群,原namenode不需要重新格式化
但是需要运行hdfs -initializeSharedEdits来公有日志文件
注2: 如果双namenode都是standby状态, 可能是因为没有在zk上注册信息

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

其他语句
单独启动datanodehadoop-daemon.sh start datanode
单独启动nodemanageryarn-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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值