一.软件包准备
CentOS Linux release 7.2 Linux version 3.10.0-327.el7.x86_64
jdk-7u65-linux-x64.tar.gz
zookeeper-3.4.9
hadoop-2.7.3
hbase-1.3.0
集群机器配置
时间同步、设置时区
ssh免密登录
安装psmisc工具包
二.安装、配置
节点规划
hostname | ip | Hadoop | Hbase | zk |
ecloud-test06.cn | 192.168.200.80 | NameNode DataNode JournalNode DFSZKFailoveController | HMaster HRegionServer | QuorumPeerMain |
ecloud-test07.cn | 192.168.200.81 | NameNode DataNode JournalNode DFSZKFailoveController | HMaster HRegionServer | QuorumPeerMain |
ecloud-test09.cn | 192.168.200.83 | DataNode JournalNode | HRegionServer ThriftServer | QuorumPeerMain |
1. zk安装配置
解压zk到安装目录
修改安装目录中zoo.cfg文件
dataDir=/sdb/data1/zookeeper/data #zk数据目录
dataLogDir=/home/zookeeper/logs#zk日志目录
clientPort=2181#zk端口
server.1=192.168.200.80:2888:3888# .x 本节点id,需要在dataDir下创
server.2=192.168.200.81:2888:3888# 建myid文件并填入对应id
server.3=192.168.200.83:2888:3888
2888 集群通信端口,3888集群选主端口
在各机器上开启服务 bin/zkServer.sh start
在其中一台机器bin/zkClient.sh 连接服务测试
2. Hadoop 安装配置
解压hadoop到安装目录
添加/etc/profile.d/hdfs.sh
HADOOP_HOME=/usr/local/hadoop-2.7.3 PATH=$HADOOP_HOME/bin:$PATH export HADOOP_HOME export PATH HADOOP_CONF=/usr/local/hadoop-2.7.3/etc/hadoop export HADOOP_CONF export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native/ export LD_LIBRARY_PATH=${HADOOP_HOME}/lib/native/:$LD_LIBRARY_PATH
修改hadoop-env.sh
export JAVA_HOME=/Application/xx/enterprise/jdk/jdk1.7.0_65 export HADOOP_OPTS="$HADOOP_OPTS -Djava.net.preferIPv4Stack=true -Duser.timezone=GMT+08"
修改hdfs-site.xml配置文件
<configuration> <!--NameNode集群名称--> <property> <name>dfs.nameservices</name> <value>hcluster</value> </property> <!--NameNode地址集群标识(hcluster),最多两个--> <property> <name>dfs.ha.namenodes.hcluster</name> <value>nn0,nn1</value> </property> <!--HDFS文件系统数据存储位置,可以分别保存到不同硬盘,突破单硬盘性能瓶颈,多个位置以逗号隔开--> <property> <name>dfs.data.dir</name> <value>/sdb/data1/hadoop/hdfs/data</value> </property> <!--数据副本数量,根据HDFS台数设置,默认3份--> <property> <name>dfs.replication</name> <value>2</value> </property> <property> <name>dfs.namenode.rpc-address.hcluster.nn0</name> <value>ecloud-test06.cn:9000</value> </property> <!--RPC端口--> <property> <name>dfs.namenode.rpc-address.hcluster.nn1</name> <value>ecloud-test07.cn:9000</value> </property> <!--NameNode HTTP访问地址--> <property> <name>dfs.namenode.http-address.hcluster.nn0</name> <value>ecloud-test06.cn:50070</value> </property> <property> <name>dfs.namenode.http-address.hcluster.nn1</name> <value>ecloud-test07.cn:50070</value> </property> <!--NN存放元数据和日志位置--> <property> <name>dfs.namenode.name.dir</name> <value>/sdb/data1/hadoop/hdfs/name</value> </property> <!--同时把NameNode元数据和日志存放在JournalNode上(/home/hadoop/journal/hcluster)--> <property> <name>dfs.namenode.shared.edits.dir</name> <value>qjournal://ecloud-test06.cn:8485;ecloud-test07.cn:8485;ecloud-test09.cn:8485/hcluster</value> </property> <!--JournalNode上元数据和日志存放位置--> <property> <name>dfs.journalnode.edits.dir</name> <value>/sdb/data1/hadoop/hdfs/journal</value> </property> <!--开启NameNode失败自动切换--> <property> <name>dfs.ha.automatic-failover.enabled</name> <value>true</value> </property> <!--NameNode失败自动切换实现方式--> <property> <name>dfs.client.failover.proxy.provider.hcluster</name> <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value> </property> <!--隔离机制方法,确保任何时间只有一个NameNode处于活动状态--> <property> <name>dfs.ha.fencing.methods</name> <value>sshfence</value> </property> <!--使用sshfence隔离机制要SSH免密码认证--> <property> <name>dfs.ha.fencing.ssh.private-key-files</name> <value>/root/.ssh/id_rsa</value> </property> <property> <name>dfs.ha.fencing.ssh.connect-timeout</name> <value>30000</value> </property> </configuration>
修改core-site.xml配置文件
<configuration> <!--HDFS路径逻辑名称--> <property> <name>fs.defaultFS</name> <value>hdfs://hcluster</value> </property> <!--Hadoop存放临时文件位置--> <property> <name>hadoop.tmp.dir</name> <value>/sdb/data1/hadoop/hdfs/tmp</value> </property> <!--使用的zookeeper集群地址--> <property> <name>ha.zookeeper.quorum</name> <value>ecloud-test06.cn:2181,ecloud-test07.cn:2181,ecloud-test09.cn:2181</value> </property> </configuration>
修改yarn-site.xml配置文件
<configuration> <!-- Site specific YARN configuration properties --> <!--启用RM高可用--> <property> <name>yarn.resourcemanager.ha.enabled</name> <value>true</value> </property> <!--RM集群标识符--> <property> <name>yarn.resourcemanager.cluster-id</name> <value>rm-cluster</value> </property> <property> <!--指定两台RM主机名标识符--> <name>yarn.resourcemanager.ha.rm-ids</name> <value>rm1,rm2</value> </property> <!--RM故障自动切换--> <property> <name>yarn.resourcemanager.ha.automatic-failover.recover.enabled</name> <value>true</value> </property> <!--RM故障自动恢复 <property> <name>yarn.resourcemanager.recovery.enabled</name> <value>true</value> </property> --> <!--RM主机1--> <property> <name>yarn.resourcemanager.hostname.rm1</name> <value>ecloud-test06.cn</value> </property> <!--RM主机2--> <property> <name>yarn.resourcemanager.hostname.rm2</name> <value>ecloud-test07.cn</value> </property> <!--RM状态信息存储方式,一种基于内存(MemStore),另一种基于ZK(ZKStore)--> <property> <name>yarn.resourcemanager.store.class</name> <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value> </property> <!--使用ZK集群保存状态信息--> <property> <name>yarn.resourcemanager.zk-address</name> <value>ecloud-test06.cn:2181,ecloud-test07.cn:2181,ecloud-test09.cn:2181</value> </property> <!--向RM调度资源地址--> <property> <name>yarn.resourcemanager.scheduler.address.rm1</name> <value>ecloud-test06.cn:8030</value> </property> <property> <name>yarn.resourcemanager.scheduler.address.rm2</name> <value>ecloud-test07.cn:8030</value> </property> <!--NodeManager通过该地址交换信息--> <property> <name>yarn.resourcemanager.resource-tracker.address.rm1</name> <value>ecloud-test06.cn:8031</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address.rm2</name> <value>ecloud-test07.cn:8031</value> </property> <!--客户端通过该地址向RM提交对应用程序操作--> <property> <name>yarn.resourcemanager.address.rm1</name> <value>ecloud-test06.cn:8032</value> </property> <property> <name>yarn.resourcemanager.address.rm2</name> <value>ecloud-test07.cn:8032</value> </property> <!--管理员通过该地址向RM发送管理命令--> <property> <name>yarn.resourcemanager.admin.address.rm1</name> <value>ecloud-test06.cn:8033</value> </property> <property> <name>yarn.resourcemanager.admin.address.rm2</name> <value>ecloud-test07.cn:8033</value> </property> <!--RM HTTP访问地址,查看集群信息--> <property> <name>yarn.resourcemanager.webapp.address.rm1</name> <value>ecloud-test06.cn:8088</value> </property> <property> <name>yarn.resourcemanager.webapp.address.rm2</name> <value>ecloud-test07.cn:8088</value> </property> </configuration>
修改mapred-site.xml配置文件
<configuration> <!--指定MR框架为YARN--> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <!-- 配置 MapReduce JobHistory Server地址 ,默认端口10020 --> <property> <name>mapreduce.jobhistory.address</name> <value>0.0.0.0:10020</value> </property> <!-- 配置 MapReduce JobHistory Server HTTP地址, 默认端口19888 --> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>0.0.0.0:19888</value> </property> </configuration>
修改slaves配置文件
ecloud-test06.cn ecloud-test07.cn ecloud-test09.cn
在任一配置了journalnode的节点启动JournalNode
sbin/hadoop-daemons.sh start journalnode
在 test06 上执行格式化namenode
hdfs namenode -format
在 test06 启动 namenode
sbin/hadoop-daemon.sh start namenode
在 test07 执行同步
bin/hdfs namenode -bootstrapStandby
在 test07 启动 namenode
sbin/hadoop-daemon.sh start namenode
在 test06格式化zkfc
hdfs zkfc -formatZK
在 test06启动HDFS集群
sbin/start-dfs.sh
在命令行输入jps查看hadoop上述节点,如果都存在则安装成功
3. Hbase安装配置
解压hbase到安装目录
修改hbase-env.sh配置文件
export JAVA_HOME=/Application/xx/enterprise/jdk/jdk1.7.0_65 export HBASE_OPTS="-XX:+UseConcMarkSweepGC -Duser.timezone=GMT+08" export HBASE_MANAGES_ZK=false
修改hbase-site.xml配置文件
<configuration> <property> <name>hbase.rootdir</name> <value>hdfs://hcluster/hbase</value> </property> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> <property> <name>hbase.zookeeper.quorum</name> <value>ecloud-test06.cn,ecloud-test07.cn,ecloud-test08.cn</value> </property> <property> <name>hbase.master.port</name> <value>60000</value> </property> <property> <name>zookeeper.session.timeout</name> <value>60000</value> </property> <property> <name>hbase.zookeeper.property.clientPort</name> <value>2181</value> </property> <property> <name>hbase.zookeeper.property.dataDir</name> <value>/sdb/data1/zookeeper/data</value> </property> </configuration>
修改regionservers配置文件
ecloud-test06.cn ecloud-test07.cn ecloud-test09.cn
修改backup-masters配置文件
ecloud-test07.cn
使用start-hbase.sh启动集群
使用hbase shell打开shell验证安装
参考: