赞
踩
中大型的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 |
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) | crontab -e |
修改yum源 |
注1: 设置每小时同步一次的语句如下
01 */1 * * * /usr/sbin/ntpdate servicenode >> /root/time.txt 2&>1
#前五个以空格分隔的字段分别表示:分 时 日 月 周,*是通配符.他们决定了定时任务的执行时间
#之后就是任务主体的shell语句
#末尾的 2&>1 :2代表异常信息,该命令是将异常日志也重定向到日志位置
功能 | 语句 |
---|---|
安装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出去
功能 | 语句 |
---|---|
上传 | 使用远程工具上传 |
解压 | 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) | 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
功能 | 语句 |
---|---|
上传 | 使用远程工具上传 |
解压 | 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
就能找到官网了).
如果zookeeper正常启动,而且文件都配置完成,hadoopHA就算是初步搭建完成了
不出意外的话,我们可以输入以下指令启动起hadoop集群
功能 | 语句 |
---|---|
启动云日志服务 | hadoop-daemons.sh start journalnode |
格式化主namenode(注1) | hdfs namenode -format |
启动主namenode | hadoop-daemon.sh start namenode |
复制元数据到备用NN | hdfs namenode -bootstrapStandby |
在zk上注册 | hdfs zkfc -formatZK |
在主NN上启动hdfs | start-dfs.sh |
在主RM上启动yarn | start-yarn.sh |
注1: 如果是将普通集群升级为高可用集群,原namenode不需要重新格式化
但是需要运行hdfs -initializeSharedEdits
来公有日志文件
注2: 如果双namenode都是standby状态, 可能是因为没有在zk上注册信息
如果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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。