HP DL160 Gen9服务器集群部署文档
硬件配置
=======================================================
Server Memory CPU DISK NetWork
DL160① 32GB 6*1.9GHZ 2*2TB(SATA) 2*1GBE
DL160② 32GB 6*1.9GHZ 2*2TB(SATA) 2*1GBE
DL160③ 24GB 6*1.9GHZ 2*2TB(SATA) 2*1GBE
DL160④ 24GB 6*1.9GHZ 2*2TB(SATA) 2*1GBE
DL160⑤ 24GB 6*1.9GHZ 2*2TB(SATA) 2*1GBE
DL160⑥ 8GB 6*1.9GHZ 2*1TB(SATA) 2*1GBE
=======================================================
集群规划
==============================================================
Host IP Role Soft Process
lf1 192.168.0.211 HDFS Master Hadoop2.4.1 NameNode(Active)
HBase Master Hbase0.98.8 DFSZKFailoverController
HMaster(Active)
lf3 192.168.0.213 YARN Master Hadoop2.4.1 ResourceManager(Active)
HBase Master Hbase0.98.8 DFSZKFailoverController
HMaster(Backup)
lf5 192.168.0.215 HDFS Slave Hadoop2.4.1 DataNode
JournalNode
YARN Slave Hadoop2.4.1 NodeManager
ZooKeeper Follower ZooKeeper3.4.5 QuorumPeerMain
HBase Slave Hbase0.98.8 HRegionServer
Sqoop Sqoop1.4.5 Sqoop
lf6 192.168.0.216 HDFS Slave Hadoop2.4.1 DataNode
JournalNode
YARN Slave Hadoop2.4.1 NodeManager
ZooKeeper Leader ZooKeeper3.4.5 QuorumPeerMain
HBase Slave Hbase0.98.8 HRegionServer
Hive Hive0.14.0
lf7 192.168.0.217 HDFS Slave Hadoop2.4.1 DataNode
JournalNode
YARN Slave Hadoop2.4.1 NodeManager
ZooKeeper Follower ZooKeeper3.4.5 QuorumPeerMain
HBase Slave Hbase0.98.8 HRegionServer
===============================================================
一、安装JDK(在lf1节点上)
cd /home/lefuBigDataDev/clouds/
安装jdk
tar -zxvf jdk-7u65-linux-x64.tar.gz
mv jdk1.7_65 jdk
配置JAVA_HOME到环境变量
vim /etc/profile
export JAVA_HOME=/home/lefuBigDataDev/clouds/jdk
export PATH=.:$JAVA_HOME/bin:$PATH
shift+zz
刷新环境变量使JAVA_HOME立即生效
source /etc/profile
验证jdk是否安装成功
java -version
复制配置好的jdk和/etc/profile到其他节点
scp -r /home/lefuBigDataDev/clouds/jdk lefuBigDataDev@lf3:/home/lefuBigDataDev/clouds/
scp /etc/profile lefuBigDataDev@lf3:/etc/ ##在lf5节点上执行source /etc/profile使环境变量立即生效
scp -r /home/lefuBigDataDev/clouds/jdk lefuBigDataDev@lf5:/home/lefuBigDataDev/clouds/
scp /etc/profile lefuBigDataDev@lf5:/etc/ ##在lf5节点上执行source /etc/profile使环境变量立即生效
scp -r /home/lefuBigDataDev/clouds/jdk lefuBigDataDev@lf6:/home/lefuBigDataDev/clouds/
scp /etc/profile lefuBigDataDev@lf6:/etc/ ##在lf6节点上执行source /etc/profile使环境变量立即生效
scp -r /home/lefuBigDataDev/clouds/jdk lefuBigDataDev@lf7:/home/lefuBigDataDev/clouds/
scp /etc/profile lefuBigDataDev@lf7:/etc/ ##在lf7节点上执行source /etc/profile使环境变量立即生效
二、安装ZooKeeper(在lf5节点上)
cd /home/lefuBigDataDev/clouds/
安装ZooKeeper
tar -zxvf zookeeper-3.4.5.tar.gz
mv zookeeper-3.4.5 zk
修改zookeeper配置文件
cd /home/lefuBigDataDev/clouds/zk/conf
mv zoo_sample.cfg zoo.cfg
zoo.cfg
dataDir=/home/lefuBigDataDev/clouds/zk/data
server.1=lf5:2888:3888
server.2=lf6:2888:3888
server.3=lf7:2888:3888
cd /home/lefuBigDataDev/clouds/zk/
mkdir data
cd data
echo "1">myid
配置ZOOKEEPER_HOME到环境变量
vim /etc/profile
export ZOOKEEPER_HOME=/home/lefuBigDataDev/clouds/jdk
export PATH=.:$ZOOKEEPER_HOME/bin:$JAVA_HOME/bin:$PATH
shift+zz
刷新环境变量使ZOOKEEPER_HOME立即生效
source /etc/profile
复制配置好的zk和/etc/profile到其他节点
复制到lf6节点:scp -r /home/lefuBigDataDev/clouds/zk lefuBigDataDev@lf6:/home/lefuBigDataDev/clouds/ ##修改zk/data/myid的值为2
scp /etc/profile lefuBigDataDev@lf6:/etc/ ##在lf6节点上执行source /etc/profile使环境变量立即生效
复制到lf7节点:scp -r /home/lefuBigDataDev/clouds/zk lefuBigDataDev@lf7:/home/lefuBigDataDev/clouds/ ##修改zk/data/myid的值为3
scp /etc/profile lefuBigDataDev@lf7:/etc/ ##在lf7节点上执行source /etc/profile使环境变量立即生效
验证ZooKeeper是否安装成功
在lf5节点上执行启动ZooKeeper命令:
zkServer.sh start ##启动ZooKeeper
jps ##如果出现了QuorumPeerMain进程表示ZooKeeper启动成功
zkServer.sh status ##偶数节点为Follower
在lf6节点上执行命令:
zkServer.sh start ##启动ZooKeeper
jps ##如果出现了QuorumPeerMain进程表示ZooKeeper启动成功
zkServer.sh status ##奇数节点为Leader
在lf7节点上执行命令:
zkServer.sh start ##启动ZooKeeper
jps ##如果出现了QuorumPeerMain进程表示ZooKeeper启动成功
zkServer.sh status ##偶数节点为Follower
三、安装Hadoop(在lf1节点上)
cd /home/lefuBigDataDev/clouds/
安装Hadoop
tar -zxvf hadoop-2.4.1-x64.tar.gz
mv hadoop-2.4.1 hadoop
修改hadoop配置文件(hadoop-env.sh、core-site.xml、hdfs-site.xml、mapred-env.sh、mapred-site.xml、yarn-env.sh、yarn-site.xml、slaves)
cd /home/lefuBigDataDev/clouds/hadoop/etc/hadoop
1、hadoop-env.sh
export JAVA_HOME=/home/lefuBigDataDev/clouds/jdk
export HADOOP_HEAPSIZE=2048
2、core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://ns1</value>
<description>指定hdfs的nameservice为ns1</description>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/lefuBigDataDev/clouds/hadoop/tmp</value>
<description>指定hadoop存放数据的临时目录</description>
</property>
<property>
<name>ha.zookeeper.quorum</name>
<value>lf5:2181,lf6:2181,lf7:2181</value>
<description>采用QJM方式的高可用需要用到的zookeeper集群节点</description>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
<description>指定hadoop辅助IO操作的缓冲区为128KB,默认是4KB</description>
</property>
<property>
<name>io.compression.codecs</name>
<value>org.apache.hadoop.io.compress.DefaultCodec,org.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.BZip2Codec</value>
<description>hdfs实现数据压缩的算法包</description>
</property>
<property>
<name>fs.trash.interval</name>
<value>43200</value>
<description>开启hadoop回收站功能,保存回收站的数据30天,回收站默认为0分钟,表示关闭</description>
</property>
<property>
<name>fs.trash.checkpoint.interval</name>
<value>43200</value>
<description>开启hadoop回收站检查间隔(默认为0分钟,必须小于等于fs.trash.interval的时间)</description>
</property>
</configuration>
3、hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/lefuBigDataDev/clouds/hadoop/dfs/name</value>
<description>指定hadoop的NameNode存放元数据fsImage文件在本地文件系统上的路径</description>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/lefuBigDataDev/clouds/hadoop/dfs/data</value>
<description>指定hadoop的DataNode存放数据块在本地文件系统上的路径,多个文件夹用逗号分隔</description>
</property>
<property>
<name>dfs.namenode.edits.dir</name>
<value>/home/lefuBigDataDev/clouds/hadoop/dfs/name</value>
<description>指定hadoop的NameNode存放编辑日志edits文件在本地文件系统上的路径</description>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
<description>指定hdfs上存放数据的副本数为3,完全分布式下默认为3</description>
</property>
<property>
<name>dfs.blocksize</name>
<value>134217728</value>
<description>指定hdfs的数据块大小为128MB,默认块大小为128MB</description>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
<description>启用REST方式通过web查看hdfs上的文件、文件夹等详细信息</description>
</property>
<property>
<name>dfs.nameservices</name>
<value>ns1</value>
<description>指定hdfs的nameservice为ns1,需要和core-site.xml中的保持一致</description>
</property>
<property>
<name>dfs.ha.namenodes.ns1</name>
<value>nn1,nn2</value>
<description>ns1下面有两个NameNode,分别是nn1,nn2</description>
</property>
<property>
<name>dfs.namenode.rpc-address.ns1.nn1</name>
<value>lf1:9000</value>
<description>nn1的RPC通信地址</description>
</property>
<property>
<name>dfs.namenode.http-address.ns1.nn1</name>
<value>lf1:50070</value>
<description>nn1的http通信地址</description>
</property>
<property>
<name>dfs.namenode.rpc-address.ns1.nn2</name>
<value>lf2:9000</value>
<description>nn2的RPC通信地址</description>
</property>
<property>
<name>dfs.namenode.http-address.ns1.nn2</name>
<value>lf2:50070</value>
<description>nn2的http通信地址</description>
</property>
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://lf5:8485;lf6:8485;lf7:8485/ns1</value>
<description>指定NameNode的元数据在JournalNode上的存放位置</description>
</property>
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/home/lefuBigDataDev/clouds/hadoop/dfs/journal</value>
<description>指定JournalNode在本地磁盘存放数据的位置</description>
</property>
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
<description>活动NameNode失效时与备用NameNode完成自动切换</description>
</property>
<property>
<name>dfs.client.failover.proxy.provider.ns1</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
<description>配置自动切换实现方式的java类</description>
</property>
<property>
<name>dfs.ha.fencing.methods</name>
<value>
sshfence
shell(/bin/true)
</value>
<description>非平稳故障转移需要使用规避(fencing)机制,多种规避方法以换行分隔,每个规避方法一行</description>
</property>
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/home/lefuBigDataDev/.ssh/id_rsa</value>
<description>使用规避sshfence隔离机制时需要ssh免登陆</description>
</property>
<property>
<name>dfs.ha.fencing.ssh.connect-timeout</name>
<value>30000</value>
<description>配置规避sshfence隔离机制超时时间</description>
</property>
<property>
<name>dfs.datanode.du.reserved</name>
<value>10737418240</value>
<description>预留10GB给其他非HDFS应用程序使用</description>
</property>
</configuration>
4、mapred-env.sh
export JAVA_HOME=/home/lefuBigDataDev/clouds/jdk
export HADOOP_JOB_HISTORYSERVER_HEAPSIZE=1000
export HADOOP_MAPRED_ROOT_LOGGER=INFO,RFA
5、mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
<description>指定mr框架为yarn方式</description>
</property>
<property>
<name>mapreduce.task.io.sort.factor</name>
<value>100</value>
<description>reducer进入排序(合并map的输出)阶段默认合并因子是10,这里的100是为了减少合并的次数</description>
</property>
<property>
<name>mapreduce.job.jvm.numtasks</name>
<value>-1</value>
<description>开启jvm重用,在密集型任务计算时效率更高</description>
</property>
<property>
<name>mapreduce.output.fileoutputformat.compress.codec</name>
<value>org.apache.hadoop.io.compress.DefaultCodec</value>
<description>用于处理map任务输出的编解码器</description>
</property>
<property>
<name>mapreduce.map.maxattempts</name>
<value>4</value>
<description>map任务失败最大尝试次数,默认尝试4次</description>
</property>
<property>
<name>mapreduce.reduce.maxattempts</name>
<value>4</value>
<description>reduce任务失败最大尝试次数,默认尝试4次</description>
</property>
<property>
<name>mapreduce.reduce.shuffle.parallelcopies</name>
<value>10</value>
<description>reduce任务复制map输出的阶段,默认启用5个线程,这里指定为10,当map输出数量小于该值时则只每个map任务输出对应一个reduce复制线程</description>
</property>
<property>
<name>mapreduce.map.speculative</name>
<value>false</value>
<description>关闭map任务的推测执行</description>
</property>
<property>
<name>mapreduce.reduce.speculative</name>
<value>false</value>
<description>关闭reduce任务的推测执行</description>
</property>
<property>
<name>mapreduce.job.reduce.slowstart.completedmaps</name>
<value>0.80</value>
<description>慢启动reduce任务,默认调度器会等待作业5%的map任务结束后调用reduce任务开始等待,等待的时候reduce是会占用reduce任务槽导致其他作业分配不到reduce任务。如果是大型作业时会降低集群的利用率,这里设置某个作业的map任务运行到80%的时候再启动reduce等待</description>
</property>
</configuration>
6、yarn-env.sh
export JAVA_HOME=/home/lefuBigDataDev/clouds/jdk
7、yarn-site.xml
<configuration>
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
<description>开启ResourceManager的HA</description>
</property>
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>yrc</value>
<description>指定ResourceManager的集群ID</description>
</property>
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
<description>指定HA方式的活动和备用的ResourceManager的名字</description>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>lf3</value>
<description>指定活动的ResourceManager的节点</description>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>lf4</value>
<description>指定备用的ResourceManager的节点</description>
</property>
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>lf5:2181,lf6:2181,lf7:2181</value>
<description>指定zk集群地址</description>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
<description>在NodeManager上扩展自定义服务</description>
</property>
<property>
<name>yarn.nodemanager.resource.cpu-vcores</name>
<value>6</value>
<description>yarn使用虚拟cpu个数,默认8个;虚拟cpu个数在生产中建议和物理cpu核数相同</description>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>16384</value>
<description>yarn节点上可使用的物理内存总量,默认8192MB(8GB),这里设置为16384MB(16GB)</description>
</property>
<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>2.1</value>
<description>任务每使用1MB物理内存,最多可使用虚拟内存量,默认是2.1MB</description>
</property>
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>true</value>
<description>是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认是true</description>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>true</value>
<description>是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认是true</description>
</property>
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>1024</value>
<description>单个任务可申请的最少物理内存量,默认是1024MB(1GB),如果一个任务申请的物理内存量少于该值,则该对应的值改为这个数</description>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>15360</value>
<description>单个任务可申请的最多物理内存量,默认是8192MB(8GB),这里是15360MB(15GB)</description>
</property>
</configuration>
8、slaves
lf5
lf6
lf7
配置HADOOP_HOME到环境变量
vim /etc/profile
export HADOOP_HOME=/home/lefuBigDataDev/clouds/jdk
export PATH=.:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$JAVA_HOME/bin:$PATH
刷新环境变量使HADOOP_HOME立即生效
source /etc/profile
复制配置好的hadoop到其他节点
复制到lf3节点:scp -r /home/lefuBigDataDev/clouds/hadoop lefuBigDataDev@lf3:/home/lefuBigDataDev/clouds/ ##添加HADOOP_HOME到/etc/profile,然后执行source /etc/profile立即生效
复制到lf5节点:scp -r /home/lefuBigDataDev/clouds/hadoop lefuBigDataDev@lf5:/home/lefuBigDataDev/clouds/ ##添加HADOOP_HOME到/etc/profile,然后执行source /etc/profile立即生效
复制到lf6节点:scp -r /home/lefuBigDataDev/clouds/hadoop lefuBigDataDev@lf6:/home/lefuBigDataDev/clouds/ ##添加HADOOP_HOME到/etc/profile,然后执行source /etc/profile立即生效
复制到lf7节点:scp -r /home/lefuBigDataDev/clouds/hadoop lefuBigDataDev@lf7:/home/lefuBigDataDev/clouds/ ##添加HADOOP_HOME到/etc/profile,然后执行source /etc/profile立即生效
开始准备启动hadoop集群,严格按照如下步骤执行
1、检查lf5、lf6、lf7节点上的ZooKeeper集群是否启动(HDFS HA和YARN HA都需要依赖ZooKeeper集群)
在lf5节点上执行命令:
zkServer.sh status ##如果没有QuorumPeerMain进程则执行zkServer.sh start启动
在lf6节点上执行命令:
zkServer.sh status ##如果没有QuorumPeerMain进程则执行zkServer.sh start启动
在lf7节点上执行命令:
zkServer.sh status ##如果没有QuorumPeerMain进程则执行zkServer.sh start启动
2、在lf1节点上启动JournalNode
cd /home/lefuBigDataDev/clouds/hadoop/sbin
hadoop-daemons.sh start journalnode
3、在lf1节点上格式化hadoop的HDFS,即hadoop的分布式文件系统
cd /home/lefuBigDataDev/clouds/hadoop/bin
hdfs namenode -format ##日志中出现这行内容Storage directory /home/lefuBigDataDev/clouds/hadoop/dfs/name has been successfully formatted.则表示格式化HDFS成功
4、在lf1节点上格式化ZKFC,即ZooKeeper故障转移控制器
cd /home/lefuBigDataDev/clouds/hadoop/bin
hdfs zkfc -formatZK ##日志中出现这行内容ha.ActiveStandbyElector: Successfully created /hadoop-ha/ns1 in ZK.则表示格式化ZKFC成功
5、在lf1节点上启动hadoop的HDFS
cd /home/lefuBigDataDev/clouds/hadoop/sbin
start-dfs.sh
6、在lf3节点上启动hadoop的YARN
cd /home/lefuBigDataDev/clouds/hadoop/sbin
start-yarn.sh
7、验证hadoop集群是否启动成功
1、使用shell验证:
输入命令:for i in lf1 lf3 lf5 lf6 lf7; do echo $i; ssh $i `which jps`; done ##如下进程表示hadoop集群启动成功
lf1
3598 DFSZKFailoverController
9197 Jps
3283 NameNode
lf3
2902 ResourceManager
3037 JobHistoryServer
7491 Jps
lf5
3148 DataNode
3370 NodeManager
3255 JournalNode
3073 QuorumPeerMain
15238 Jps
lf6
3220 NodeManager
2917 QuorumPeerMain
10380 Jps
2997 DataNode
3105 JournalNode
lf7
2974 QuorumPeerMain
3163 JournalNode
3277 NodeManager
3056 DataNode
12048 Jps
2、使用浏览器方式验证:
输入lf1:50070验证HDFS
输入lf3:8088验证YARN
输入lf3:19888验证HistoryServer
8、以上两种方式验证通过则表示Hadoop集群正确部署并启动成功
四、安装HBase(在lf1节点上),前提条件是必须已有ZooKeeper集群
cd /home/lefuBigDataDev/clouds/
安装HBase
tar -zxvf hbase-0.98.8-hadoop2-bin.tar.gz
mv hbase-0.98.8-hadoop2-bin hbase
修改hbase配置文件(hbase-env.sh,hbase-site.xml,regionservers,需要将Hadoop的hdfs-site.xml和core-site.xml 放到hbase/conf下)
1、hbase-env.sh
export JAVA_HOME=/home/lefuBigDataDev/clouds/jdk
export HBASE_HEAPSIZE=3000
2、hbase-site.xml
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://ns1/hbase</value>
<description>指定hbase在HDFS上存储的路径</description>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
<description>指定hbase集群为完全分布式</description>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>lf5:2181,lf6:2181,lf7:2181</value>
<description>指定HBase集群使用外部的zookeeper集群的地址</description>
</property>
<property>
<name>zookeeper.session.timeout</name>
<value>60000</value>
<description>RegionServer与zookeeper连接超时时间默认180000毫秒(3分钟),当超过超时时间时,zookeeper会将超时节点的RegionServer从RegionServer集群清单中清除,当HMaster收到移除通知后会对超时节点的Regions重新负载均衡,让其他存活的RegionServer接管。这里改为60000毫秒(1分钟)</description>
</property>
<property>
<name>hbase.regionserver.handler.count</name>
<value>80</value>
<description>RegionServer端开启的RPC监听器实例个数(RegionServer能够处理的IO请求线程数)。老版本默认10,0.98.8中默认是30,这里改为80</description>
</property>
<property>
<name>hfile.block.cache.size</name>
<value>0.4</value>
<description>regionserver cache的大小,默认是0.4,是整个堆内存的多少比例作为regionserver的cache,调大该值会提升查询性能。如果有大量的查询,写入不多,则调到0.5。当这里设置大了,有MapReduce作业Scan HBase时需要在MapReduce作业的Scan类中添加scan.setCacheBlocks(false),这样可以避免由于MapReduce使用regionserver的cache都被替换,造成hbase的查询性能明显下降。</description>
</property>
<property>
<name>hbase.hregion.memstore.flush.size</name>
<value>268435456</value>
<description>regionserver的单个region memstore的大小,默认是128M,这里设为256。在hbase结构中,一个regionserver管理多个region,一个region对应一个hlog和多个store,一个store对应多个storefile和一个memstore,这里的hbase.hregion.memstore.flush.size意思一个region下面的所有store里面的memstore的达到多少时,开始将这些memstore flush到hdfs中去,配置这个值,需
要参考一下,平均每个regionserver管理的region数量,如果每台regionsever管理的region不多的话,可以适当的调大该值,如512M时再flush</description>
</property>
<property>
<name>hbase.hregion.max.filesize</name>
<value>10737418240</value>
<description>默认10GB,regions会被hmaster balance入各个regionserver,后随着单region的记录数增加,触发splite条件一般为hbase.hregion.max.filesize,会对其进行splite,找到region的middlekey,之后一分为二成为两个region,当然这是一个完整事务,之后会随着balance入不同的regionserver进行负载方面的均衡。</description>
</property>
<property>
<name>hbase.hstore.compactionThreshold</name>
<value>5</value>
<description>设置执行Compaction(Major或Minor)操作的阈值,默认是3。对于HBase负载较重的系统,为降低过频繁的合并操作,这里设置成5。</description>
</property>
</configuration>
3、regionservers
lf5
lf6
lf7
配置HBASE_HOME到环境变量
vim /etc/profile
export HBASE_HOME=/home/lefuBigDataDev/clouds/hbase
export PATH=.:$HBASE_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$JAVA_HOME/bin:$PATH
shift+ZZ
刷新环境变量使HBASE_HOME立即生效
source /etc/profile
复制配置好的hbase到其他节点
复制到lf3节点:scp -r /home/lefuBigDataDev/clouds/hbase lefuBigDataDev@lf3:/home/lefuBigDataDev/clouds/ ##添加HBASE_HOME到/etc/profile,然后执行source /etc/profile立即生效
复制到lf5节点:scp -r /home/lefuBigDataDev/clouds/hbase lefuBigDataDev@lf5:/home/lefuBigDataDev/clouds/ ##添加HBASE_HOME到/etc/profile,然后执行source /etc/profile立即生效
复制到lf6节点:scp -r /home/lefuBigDataDev/clouds/hbase lefuBigDataDev@lf6:/home/lefuBigDataDev/clouds/ ##添加HBASE_HOME到/etc/profile,然后执行source /etc/profile立即生效
复制到lf7节点:scp -r /home/lefuBigDataDev/clouds/hbase lefuBigDataDev@lf7:/home/lefuBigDataDev/clouds/ ##添加HBASE_HOME到/etc/profile,然后执行source /etc/profile立即生效
开始准备启动hbase集群,严格按照如下步骤执行
1、验证各个节点的时间误差,HBase不允许最大时间差超过30秒
for i in lf1 lf3 lf5 lf6 lf7; do echo $i; ssh $i date; done
2、如果各个节点的时间误差超过30秒则执行如下命令
for i in lf1 lf3 lf5 lf6 lf7; do echo $i; ssh $i date -s 月/日/年; done
for i in lf1 lf3 lf5 lf6 lf7; do echo $i; ssh $i date -s 时/分/秒; done
3、检查lf5、lf6、lf7节点上的ZooKeeper集群是否启动(HBase集群需要依赖ZooKeeper集群)
在lf5节点上执行命令:
zkServer.sh status ##如果没有QuorumPeerMain进程则执行zkServer.sh start启动
在lf6节点上执行命令:
zkServer.sh status ##如果没有QuorumPeerMain进程则执行zkServer.sh start启动
在lf7节点上执行命令:
zkServer.sh status ##如果没有QuorumPeerMain进程则执行zkServer.sh start启动
4、在lf1节点上启动hbase HA Active进程
cd /home/lefuBigDataDev/clouds/hbase/bin
start-hbase.sh
5、在lf3节点上启动hbase HA Backup进程
hbase-daemon.sh start master
6、验证hbase集群是否运行成功
1、使用shell验证:
输入命令:for i in lf1 lf3 lf5 lf6 lf7; do echo $i; ssh $i `which jps`; done ##如下进程表示hbase集群启动成功
lf1
11850 NameNode
15778 Jps
12167 DFSZKFailoverController
12407 HMaster
lf3
8861 ResourceManager
11192 Jps
9083 JobHistoryServer
9301 HMaster
lf5
17944 QuorumPeerMain
18029 DataNode
18250 NodeManager
21167 Jps
18136 JournalNode
18441 HRegionServer
lf6
15900 Jps
12687 NodeManager
5492 RunJar
12383 QuorumPeerMain
12466 DataNode
12878 HRegionServer
12573 JournalNode
lf7
14187 NodeManager
16753 Jps
13956 DataNode
13881 QuorumPeerMain
14073 JournalNode
14378 HRegionServer
2、使用浏览器方式验证:
输入lf1:60010验证HBase集群信息
输入lf3:60010验证HBase备用节点信息
7、以上两种方式验证通过则表示HBase集群正确部署并启动成功
五、安装Sqoop(在lf5节点上),前提条件是已有Hadoop集群
cd /home/lefuBigDataDev/clouds/
安装Sqoop
tar -zxvf sqoop-1.4.5.bin.tar.gz
mv sqoop-1.4.5.bin sqoop
添加SQOOP_HOME到环境变量
export SQOOP_HOME=/home/lefuBigDataDev/clouds/sqoop
shift+ZZ
刷新环境变量使SQOOP_HOME立即生效
source /etc/profile
验证sqoop是否安装成功
sqoop version
六、安装Hive(在lf6节点上),前提条件是已有Hadoop集群
cd /home/lefuBigDataDev/clouds/
安装Sqoop
tar -zxvf apache-hive-0.14.0-bin.tar.gz
mv apache-hive-0.14.0-bin hive
添加SQOOP_HOME到环境变量
export HIVE_HOME=/home/lefuBigDataDev/clouds/hive
shift+ZZ
刷新环境变量使HIVE_HOME立即生效
source /etc/profile
修改hive配置文件(hive-env.sh、hive-site.xml)
1、hive-env.sh
export JAVA_HOME=/home/lefuBigDataDev/clouds/jdk
export HADOOP_HOME=/home/lefuBigDataDev/clouds/hadoop
export HIVE_HOME=/home/lefuBigDataDev/clouds/hive
2、hive-site.xml
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://lf5:3306/lefu?createDatabaseIfNotExist=true</value> ##如果写成远程访问提示过期需要修改mysql库的表
<description>指定hive的元数据存储的数据库为mysql,使用JDBC的方式连接mysql,如果mysql中不存在hive数据库则创建</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>指定hive元数据存储的数据库的JDBC连接驱动类</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
<description>使用指定用户登录hive的元数据存储数据库</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>******</value>
<description>使用指定密码登录hive的元数据存储数据库</description>
</property>
<property>
<name>hive.querylog.location</name>
<value>/home/lefuBigDataDev/clouds/hive/tmp</value>
<description>默认取值为${system:java.io.tmpdir}/${system:user.name},这个目录是不存在的</description>
</property>
<property>
<name>hive.exec.local.scratchdir</name>
<value>/home/lefuBigDataDev/clouds/hive/tmp</value>
<description>默认取值为${system:java.io.tmpdir}/${system:user.name},这个目录是不存在的</description>
</property>
<property>
<name>hive.downloaded.resources.dir</name>
<value>/home/lefuBigDataDev/clouds/hive/tmp</value>
<description>默认取值为${system:java.io.tmpdir}/${hive.session.id}_resources,这个目录是不存在的</description>
</property>
</configuration>
3、验证hive安装
1、使用shell验证
hive
2、登陆mysql,mysql中有个lefu的数据库表示hive配置成功