HBase—— 5.集群安装

1.安装准备
1.1 版本选择

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

1.2 主机分配

HDFS 地址是hdfs://blueicex
hdfs启动,ZooKeeper可启动,时间已同步。

序号主机名地址所承载进程进程说明
1master192.168.1.71DataNode、HRegionServer、HMaster、QuorumPeerMain、 NodeManager、JournalNode
2node1192.168.1.72QuorumPeerMain、NameNode、NodeManager、ResourceManager、DFSZKFailoverController、JournalNode、HRegionServer、DataNode
3node2192.168.1.73HRegionServer、DataNode、NodeManager、NameNode、QuorumPeerMain、DFSZKFailoverController、 ResourceManager、 JournalNode
4node3192.168.1.74NodeManager、QuorumPeerMain、 HRegionServer、JournalNode、DataNode
5node4192.168.1.75NodeManager、QuorumPeerMain、DataNode、JournalNode、 HRegionServer
6node5192.168.1.76JournalNode、HRegionServer、HMaster、NodeManager、QuorumPeerMain、DataNode
2.安装
2.1 下载二进制文件
[root@master soft]# wget https://mirror.bit.edu.cn/apache/hbase/hbase-1.3.6/hbase-1.3.6-bin.tar.gz
[root@master soft]# tar xvf hbase-1.3.6-bin.tar.gz
2.2 准备安装环境
[root@master soft]# mv hbase-1.3.6 /share/hbase/ 
[root@master soft]# ansible all1 -m shell -a 'mkdir /share/hbase -pv'
[root@master soft]# ansible all1 -m shell -a 'mkdir /share/lnhome -pv'
[root@master soft]# ansible all1 -m shell -a 'ln -sf  /share/hbase/hbase-1.3.6/ /share/lnhome/hbase'
2.3 修改配置文件
[root@master conf]# pwd
/share/hbase/hbase-1.3.6/conf
[root@master conf]# cp hbase-site.xml hbase-site.xml.bak
[root@master conf]# cp hbase-env.sh hbase-env.sh.bak
[root@master conf]# vim hbase-env.sh
export JAVA_HOME=$JAVA_HOME 
export HBASE_MANAGES_ZK=false
[root@master conf]# pwd
/share/lnhome/hbase/conf
[root@master conf]# vim hbase-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?> 
<configuration>

	<property>		 
		<name>hbase.rootdir</name>
		<value>hdfs://blueicex/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>master:2181,node2:2181,node3:2181,node4:2181,node5:2181</value>
		<description>指定zk的地址,多个用,分割 </description>	
	</property>
		
	<!--
 	<property>
		<name>hbase.zookeeper.property.clientPort</name>
		<value>2182</value>
	</property> 
	-->
</configuration>
2.4 配置环境变量
[root@master conf]# vim /etc/profile
ansible all1 -m shell -a 'echo "export HBASE_HOME=/share/lnhome/hbase" >> /etc/profile'
ansible all1 -m shell -a 'echo "export PATH=$HBASE_HOME/bin:$PATH" >> /etc/profile'
ansible all1 -m shell -a 'echo "export HBASE_HOME=/share/lnhome/hbase" >> ~/.bashrc '
ansible all1 -m shell -a 'echo "export PATH=$HBASE_HOME/bin:$PATH" >> ~/.bashrc '
[root@master conf]# source /etc/profile ~/.bashrc
2.5 配置regionservers
[root@master conf]# vim regionservers 
master
node1
node2
node3
node4
node5
2.6 配置backup-masters
backup-masters文件是不存在的,需自行创建
[root@master conf]# echo node5 > backup-masters
2.7 拷贝hdfs-site.xml 、core-site.xml

hadoop 的 hdfs-site.xml 和 core-site.xml拷贝到 hbase-1.3.6/conf 下

[root@master conf]# pwd
/share/hbase/hbase-1.3.6/conf
[root@master conf]# cp /share/hadoop/hadoop-2.7.2/etc/hadoop/{hdfs-site.xml,core-site.xml} .
2.8 Hbase分发
[root@master hbase]# pwd
/share/hbase
[root@master hbase]# tar cvf  hbase.tar hbase-1.3.6
[root@master hbase]# ansible node -m unarchive -a 'src=./hbase.tar dest=/share/hbase/'
3.启动集群
3.1 启动zookeeper集群
[root@master hbase]# zkServer.sh start
3.2 启动HDFS、YARN集群

#个别节点需要手动启动,不能一键启动

[root@master hbase]# start-dfs.sh
[root@master hbase]# start-yarn.sh
[root@master hbase]# hdfs haadmin -getServiceState node1
standby
[root@master hbase]# hdfs haadmin -getServiceState node2
active

Notice:★★★★★★
各个节点启动后,一定要检查数据是否正常,而后启动hbase。
在这里插入图片描述
或通过命令检查

[root@master logs]# hdfs dfsadmin -report
Configured Capacity: 69730304000 (64.94 GB)
Present Capacity: 29806277331 (27.76 GB)
DFS Remaining: 29805687507 (27.76 GB)
DFS Used: 589824 (576 KB)
DFS Used%: 0.00%
Under replicated blocks: 0
Blocks with corrupt replicas: 0
Missing blocks: 0
Missing blocks (with replication factor 1): 0

-------------------------------------------------
Live datanodes (6):

Name: 192.168.1.76:50010 (node5)
Hostname: node5
Decommission Status : Normal
Configured Capacity: 10726932480 (9.99 GB)
DFS Used: 94208 (92 KB)
Non DFS Used: 6645105023 (6.19 GB)
DFS Remaining: 4081733249 (3.80 GB)
DFS Used%: 0.00%
DFS Remaining%: 38.05%
Configured Cache Capacity: 0 (0 B)
Cache Used: 0 (0 B)
Cache Remaining: 0 (0 B)
Cache Used%: 100.00%
Cache Remaining%: 0.00%
Xceivers: 10
Last contact: Sat Mar 14 11:04:36 CST 2020
...................... 
3.3 启动HBase集群
[root@master hbase]# start-hbase.sh 
starting master, logging to /share/lnhome/hbase/logs/hbase-root-master-master.out
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0
master: starting regionserver, logging to /share/lnhome/hbase/logs/hbase-root-regionserver-master.out
node4: starting regionserver, logging to /share/lnhome/hbase/logs/hbase-root-regionserver-node4.out
node2: starting regionserver, logging to /share/lnhome/hbase/logs/hbase-root-regionserver-node2.out
node3: starting regionserver, logging to /share/lnhome/hbase/logs/hbase-root-regionserver-node3.out
node5: starting regionserver, logging to /share/lnhome/hbase/logs/hbase-root-regionserver-node5.out
node1: starting regionserver, logging to /share/lnhome/hbase/logs/hbase-root-regionserver-node1.out
node2: Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0
node2: Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0
master: Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0
master: Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0
node4: Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0
node4: Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0
node5: Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0
node5: Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0
node3: Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0
node3: Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0
node1: Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0
node1: Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0
node5: starting master, logging to /share/lnhome/hbase/logs/hbase-root-master-node5.out
[root@master hbase]# jps
99761 NodeManager
24498 QuorumPeerMain
100579 DataNode
642 HMaster
98514 JournalNode
792 HRegionServer
920 Jps
[root@master hbase]# ansible all1 -a 'jps'
192.168.1.74 | CHANGED | rc=0 >>
57266 DataNode
56931 NodeManager
89410 HRegionServer
56565 JournalNode
89620 Jps
20622 QuorumPeerMain

192.168.1.75 | CHANGED | rc=0 >>
55841 JournalNode
20060 QuorumPeerMain
88525 HRegionServer
88735 Jps
56207 NodeManager
56543 DataNode

192.168.1.73 | CHANGED | rc=0 >>
68519 JournalNode
68680 DFSZKFailoverController
67307 NodeManager
68845 ResourceManager
20205 QuorumPeerMain
68204 NameNode
68316 DataNode
102028 HRegionServer
102238 Jps

192.168.1.72 | CHANGED | rc=0 >>
73027 NodeManager
73331 ResourceManager
74034 DFSZKFailoverController
108786 HRegionServer
108996 Jps
74343 NameNode
20135 QuorumPeerMain
73945 JournalNode
73868 DataNode
76556 HMaster

192.168.1.71 | CHANGED | rc=0 >>
99761 NodeManager
24498 QuorumPeerMain
100579 DataNode
642 HMaster
98514 JournalNode
792 HRegionServer
1228 Jps

192.168.1.76 | CHANGED | rc=0 >>
56292 NodeManager
20133 QuorumPeerMain
56629 DataNode
88708 HRegionServer
89108 Jps
55926 JournalNode
88814 HMaster

此时hbase启动是在master和node5启动了HMaster进程,因为运行start-hbase.sh是在master主机上的,所以master主机成为hbase的主节点(master节点),因为在backup-masters配置文件中定义的备用节点是node5,所以在node5上也有HMaster进程。此时,就可以在master和node4上通过web(端口16010)查看了。

踩到的坑:hdfs在启动完后,一定要检查namennode节点上是否有完整的数据,否则会出现HMaster进程闪退的问题,也就是说hdfs起来后,各个hdfs进程都按照配置启动了,但是访问http://namenodehostname:50070(此处是http://node1:50070和http://node2:50070),没有数据,就出现HMaster进程闪退的问题。,要根据日志来分析,建议检查ZooKeeper和hdfs启动的流程
不推荐网络上的方法,因为网上的方法不一定对。

4.hdfs和ZooKeeper参考配置

hdfs和ZooKeeper参考配置为实验和官网推荐,生产中还需进一步调优,但可直接实际运行。

4.1 hdfs参考配置
4.1.1 core-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
	<property>
		<name>io.native.lib.available</name>
		<value>true</value>
		<desciption></desciption>
	</property>
	
	<property>
		<name>fs.defaultFS</name>
		<value>hdfs://blueicex</value>
		<desciption></desciption>
	</property>

	<property>
		<name>hadoop.tmp.dir</name>
		<value>/data/hadoop/tmp</value>
		<desciption></desciption>
	</property>

	<property>
		<name>io.compression.codecs</name>
		<value>org.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.DefaultCodec,org.apache.hadoop.io.compress.BZip2Codec,rg.apache.hadoop.io.compress.SnappyCodec</value>
		<desciption></desciption>
	</property>

	<property>
		<name>io.file.buffer.size</name>
		<value>131072</value>
		<desciption></desciption>
	</property>

	<property>
		<name>ha.zookeeper.quorum</name>
		<value>master:2181,node1:2181,node2:2181,node3:2181,node4:2181,node5:2181</value>
		<desciption></desciption>
	</property>

	<property>
		<name>ipc.client.connection.maxidletime</name>
		<value>50000</value>
		<desciption></desciption>
	</property>	 

	<property>
		<name>mapreduce.output.fileoutputformat.compress.type</name>
		<value>BLOCK</value>
		<desciption></desciption>
	</property>

	<property>
		<name>io.seqfile.compression.type</name>
		<value>BLOCK</value>
		<desciption></desciption>
	</property>
	
	<property>
		<name>hadoop.proxyuser.root.hosts</name>
		<value>root</value>
		<desciption></desciption>
	</property>
	
	<property>
		<name>hadoop.proxyuser.root.groups</name>
		<value>root</value>
		<desciption>通过httpfs接口访问的用户获得的群组身份
		hdfs dfsadmin –refreshSuperUserGroupsConfiguration
        yarn rmadmin –refreshSuperUserGroupsConfiguration
		</desciption>
	</property>
	
	<property>
		<name>dfs.webhdfs.enabled</name>
		<value>true</value>
		<desciption>原生rest</desciption>
	</property>	 

	<property>
		<name></name>
		<value></value>
		<desciption></desciption>
	</property>	
	
</configuration>
4.1.2 fair-scheduler.xml
<?xml version="1.0"?>
<allocations>
        <queue name="blueicex">
                <!-- 最小资源 -->
                <minResources>512 mb,1 vcores</minResources>
                <!-- 最大资源 -->
                <maxResources>6144 mb,2 vcores</maxResources>
                <weight>2.0</weight>
                <!-- 最大运行任务数 -->
                <maxRunningApps>50</maxRunningApps>
                <!-- 队列内部调用策略 fair fifo drf-->
                <schedulingPolicy>fair</schedulingPolicy>
                <!-- 允许提交任务的用户和组-->
                <aclSubmitApps>blueicex</aclSubmitApps>
                <!-- 允许管理任务的用户和组-->
                <aclAdministerApps>blueicex</aclAdministerApps>
        </queue>

        <queue name="default">
                <weight>1.0</weight>
                <aclSubmitApps>*</aclSubmitApps>
                <aclAdministerApps>*</aclAdministerApps>
        </queue>
<!--
        <queue name="root">      
                <maxRunningApps>500</maxRunningApps>
        </queue>
-->
4.1.3 hadoop-env.sh
export JAVA_HOME=/share/lnhome/jdk
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
 
export HADOOP_HOME=/share/lnhome/hadoop
export HADOOP_COMMON_HOME=${HADOOP_HOME}
export HADOOP_HDFS_HOME=${HADOOP_HOME}
export HADOOP_MAPRED_HOME=${HADOOP_HOME}
export HADOOP_YARN_HOME=${HADOOP_HOME}
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export HDFS_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export YARN_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export HDFS_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export LD_LIBRARY_PATH=${HADOOP_HOME}/lib/native:/usr/local/lib
export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HADOOP_HOME/lib/*
export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native:$JAVA_LIBRARY_PATH
export HADOOP_PID_DIR=$HADOOP_HOME/pids


export HADOOP_CONF_DIR=${HADOOP_CONF_DIR:-"/etc/hadoop"}


for f in $HADOOP_HOME/contrib/capacity-scheduler/*.jar; do
  if [ "$HADOOP_CLASSPATH" ]; then
    export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$f
  else
    export HADOOP_CLASSPATH=$f
  fi
done

 
export HADOOP_HEAPSIZE=256
export HADOOP_NAMENODE_INIT_HEAPSIZE="128"

 
export HADOOP_OPTS="$HADOOP_OPTS -Djava.net.preferIPv4Stack=true" 
export HADOOP_NAMENODE_OPTS="-Dhadoop.security.logger=${HADOOP_SECURITY_LOGGER:-INFO,RFAS} -Dhdfs.audit.logger=${HDFS_AUDIT_LOGGER:-INFO,NullAppender} $HADOOP_NAMENODE_OPTS"
export HADOOP_DATANODE_OPTS="-Dhadoop.security.logger=ERROR,RFAS $HADOOP_DATANODE_OPTS"
export HADOOP_SECONDARYNAMENODE_OPTS="-Dhadoop.security.logger=${HADOOP_SECURITY_LOGGER:-INFO,RFAS} -Dhdfs.audit.logger=${HDFS_AUDIT_LOGGER:-INFO,NullAppender} $HADOOP_SECONDARYNAMENODE_OPTS"
export HADOOP_NFS3_OPTS="$HADOOP_NFS3_OPTS"
export HADOOP_PORTMAP_OPTS="-Xmx512m $HADOOP_PORTMAP_OPTS"
export HADOOP_CLIENT_OPTS="-Xmx512m $HADOOP_CLIENT_OPTS"
export HADOOP_SECURE_DN_USER=${HADOOP_SECURE_DN_USER}
export HADOOP_SECURE_DN_LOG_DIR=${HADOOP_LOG_DIR}/${HADOOP_HDFS_USER}
export HADOOP_PID_DIR=${HADOOP_PID_DIR}
export HADOOP_SECURE_DN_PID_DIR=${HADOOP_PID_DIR}
 
export HADOOP_IDENT_STRING=$USER
4.1.4 hdfs-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
 
<configuration>
	<property>
		<name>dfs.datanode.data.dir</name>
		<value>file:/data/hadoop/dfs</value>
		<desciption>datanode本地数据存放位置
		默认file://${hadoop.tmp.dir}/dfs/data,指定DN存放块数据的本地盘路径,可以通过逗号分隔指定多个路径。
		在生产环境可能会在一个DN上挂多块盘,因此需要修改该值。 
		</desciption>
	</property>

	<property>
		<name>dfs.replication</name>
		<value>3</value>
		<desciption>文件副本数
		块副本数,默认为3。默认值是一个比较稳妥的值。 
		</desciption>
	</property>

	<property>
		<name>dfs.namenode.name.dir</name>
		<value>file:/data/hadoop/dfsname</value>
		<desciption>namenode本地文件存放地址
		指定一个本地文件系统路径,决定NN在何处存放fsimage。可以通过逗号分隔指定多个路径,在Hadoop1.0时代这是一种为NN做高可用的方法,
		但目前有更完善的Journal Node解决方案,留默认值即可。 
		</desciption>
	</property>
	
	<!-- 	
	<property>
        <name>dfs.webhdfs.enabled</name>
        <value>true</value>
		<desciption>namenode的hdfs-site.xml是必须将dfs.webhdfs.enabled属性设置为true,
		否则就不能使用webhdfs的LISTSTATUS、LISTFILESTATUS等需要列出文件、文件夹状态的命令,
		因为这些信息都是由namenode来保存的。
		</desciption>
    </property>
	
	<property>
		<name>dfs.http.address</name>
		<value>node1:50070</value>
		<description>
		The address and the base port where the dfs namenode web ui will listen on.
I		f the port is 0 then the server will start on a free port.
		</description>
	</property>
	
	<property>
		<name>dfs.namenode.secondary.http-address</name>
		<value>node2:50090</value>
		<description>
		将namenode和secondaryNameNode配置在同一台计算机上,这种配置方法如果是做做实验的还可以,
		如果应用到实际中,存在较大风险,如果存放namenode的主机出现问题,整个文件系统将被破坏,
		严重的情况是所有文件都丢失。将namenode和secondaryNameNode配置在不同的机器上,这样的实用价值更大。
		需要存在conf中新加masters文件,并配合fs.http.address使用
		vim masters
		node1
 		</description>
	</property> 	
	-->
	
	<property>
		<name>dfs.support.append</name>
		<value>true</value>
		<desciption>是否启用HDFS的追加写入支持,默认为true。
		老版本Hadoop上append功能有bug,因此该值曾经默认为false,但现在已经可以放心使用true,有老集群升级上来的需要调整。
		</desciption>
	</property>

	<property>
		<name>dfs.permissions.enabled</name>
		<value>false</value>
		<desciption>是否开启目录权限
		默认为true。如果为true,则启用HDFS的权限检查,否则不启用。在生产 环境,一定要启用,测试环境可以自行决定。 
		</desciption>
	</property>
	
	<property>
		<name>dfs.permissions.superusergroup</name>
		<value>supergroup</value>
		<desciption> 默认supergroup,指定HDFS的超级用户组的组名,可按需设置。</desciption>
	</property>		

	<property>
		<name>dfs.nameservices</name>
		<value>blueicex</value>
		<desciption>提供服务的ns逻辑名称,与core-site.xml相对应</desciption>
	</property>

	<property>
		<name>dfs.ha.namenodes.blueicex</name>
		<value>node1,node2</value>
		<desciption>列出逻辑名称下的namenode逻辑名称</desciption>
	</property>

	<property>
		<name>dfs.namenode.rpc-address.blueicex.node1</name>
		<value>node1:9000</value>
		<desciption>指定node1的rpc地址</desciption>
	</property>
	
	<property>
		<name>dfs.namenode.rpc-address.blueicex.node2</name>
		<value>node2:9000</value>
		<desciption>指定node2的rpc地址</desciption>
	</property>
	
	<property>
		<name>dfs.namenode.http-address.blueicex.node1</name>
		<value>node1:50070</value>
		<desciption>指定node1的web server地址</desciption>
	</property>
	
	<property>
		<name>dfs.namenode.http-address.blueicex.node2</name>
		<value>node2:50070</value>
		<desciption>指定node2的web server地址</desciption>
	</property>
	
	<property>
		<name>dfs.namenode.shared.edits.dir</name>
		<value>qjournal://node1:8485;node2:8485/blueicex</value>
		<desciption>指定NameNode的元数据在JournalNode上存放的位置,通常是namenode所在机器
		</desciption>
	</property>
	
	<property>
		<name>dfs.journalnode.edits.dir</name>
		<value>/data/hadoop/journaldata</value>
		<desciption>指定JournalNode在本地磁盘上存放数据的位置</desciption>
	</property>	
	
	<property>
		<name>dfs.ha.fencing.methods</name>
		<value>sshfence</value>
		<desciption>配置隔离机制,指定隔离方法,shell通过ssh连接active namenode节点,杀掉进程
		</desciption>
	</property>	

	<property>
		<name>dfs.ha.fencing.ssh.private-key-files</name>
		<value>/root/.ssh/id_rsa</value>
		<desciption>为实现shell通过ssh连接active namenode节点,杀掉进程,配置免密登录
		</desciption>
	</property>

	<property>
		<name>dfs.client.failover.proxy.provider.blueicex</name>
		<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value> 
		<desciption>指定客户端用于HA切换的代理类,不同的NS可以不同的代理类,这是缺省的代理类
		</desciption>
	</property>  
	 

	<property>
		<name>dfs.client.failover.proxy.provider.auto-ha</name>
		<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value> 
		<desciption></desciption>
	</property>
	
	<property>
		<name>dfs.ha.automatic-failover.enabled</name>
		<value>true</value>
		<desciption>启动自动故障转移,默认为false。</desciption>
	</property>


	<property>
		<name>fs.trash.interval</name>
		<value>2880</value>
		<desciption>回收周期</desciption>
	</property>

	<property>
		<name>dfs.datanode.balance.bandwidthPerSec </name>
		<value>104857600</value>
		<desciption>HDFS做均衡时使用的最大带宽,默认为1048576,即1MB/s,对大多数千兆,甚至万兆带宽的集群来说过小。
		不过该值可以在启动balancer脚本时再设置,可以不修改集群层面默认值。 
		</desciption>
	</property>	

	<property>
		<name>dfs.namenode.handler.count</name>
		<value>10</value>
		<desciption>数据节点的服务器线程数,默认为10。可适当增加这个数值来提升DataNode RPC服务的并发度。 
		在DataNode上设定,取决于系统的繁忙程度,设置太小会导致性能下降甚至报错。线程数的提高将增加DataNode的内存需求,
		因此,不宜过度调整这个数值。		NN处理rpc请求的线程数,默认为10,对大多数集群来说该值过小,
		设置该值的一般原则是将其设置为集群大小的自然对数乘以20,即20logN,N为集群大小。例如对100个节点的集群该值可以设到90。
		</desciption>
	</property>

	<property>
		<name>dfs.blocksize</name>
		<value>134217728</value>
		<desciption>文件块大小
		块大小,默认为134217728,即128MB。268435456:256MB对大多数生产环境来说是一个比较稳妥的值。
		因为该值决定了MR的默认map数,也会影响NN消耗的内存量, 需要谨慎修改。 
		</desciption>
	</property>

	<property>
		<name>dfs.datanode.max.transfer.threads</name>
		<value>8192</value>
		<desciption>DataNode可以同时处理的数据传输连接数,即指定在DataNode内外传输数据使用的最大线程数。 
		官方将该参数的命名改为dfs.datanode.max.transfer.threads。默认值为4096。推荐值为8192。</desciption>
	</property>

	<property>
		<name>dfs.client.read.shortcircuit</name>
		<value>true</value>
		<desciption>是否开启HDFS的短路本地读,默认为false。
		当client请求数据时,datanode会读取数据然后通过TCP协议发送给client.short-circuit绕过了datanode直接读取数据。
		short-circuit的前提是client和数据在同一个结点上。short-circuit需要libhadoop.so,一个本地库。该功能使用unix套接字,
		client和node通过套接字连接,需要对这个套接字设置一个路径,并且datanode有创建这个路径的权限,一般建在/var/run或者/var/lib。
		client和datanode通过共享内在/dev/shm交换数据。
		</desciption>
	</property>

	<property>
		<name>dfs.domain.socket.path</name>
		<value>/data/hadoop/socket_PORT</value>
		<desciption></desciption>
	</property>

	<property>
		<name>dfs.datanode.du.reserved</name>
		<value>21474836480</value>
		<desciption>预留空间可能遇到的问题:预留了10G: 10737418240 预留20G:21474836480</desciption>
	</property>	

	<property>
		<name>dfs.datanode.fsdataset.volume.choosing.policy</name>  
		<value>org.apache.hadoop.hdfs.server.datanode.fsdataset.AvailableSpaceVolumeChoosingPolicy</value>  
		<desciption>hadoop写入文件有两种策略,一种是默认的轮询方式,一种是根据可用空间的大小来判断写入。
		此项配置是根据磁盘的可用空间来优先写入的策略。
		</desciption>
	</property>	

	<property>
		<name>dfs.datanode.available-space-volume-choosing-policy.balanced-space-threshold </name>
		<value>10737418240</value>
		<desciption>默认值是10737418240,10G,一般使用默认值就行,首先计算出两个值,
		一个是所有磁盘中最大可用空间,另外一个值是所有磁盘中最小可用空间,如果这两个值相差小于该配置项指定的阀值时,
		则就用轮询方式的磁盘选择策略选择磁盘存储数据副本。
		</desciption>
	</property>	

	<property>
		<name>dfs.datanode.available-space-volume-choosing-policy.balanced-space-preference-fraction</name>
		<value>0.75f</value>
		<desciption>默认值是0.75f,有多少比例的数据副本应该存储到剩余空间足够多的磁盘上。该配置项取值范围是0.0-1.0,
		一般取0.5-1.0,如果配置太小,会导致剩余空间足够的磁盘实际上没分配足够的数据副本,而剩余空间不足的磁盘取需要存储更多的数据副本,
		导致磁盘数据存储不均衡。
		</desciption>
	</property>		

	<property>
		<name>dfs.encrypt.data.transfer </name>
		<value>true</value>
		<desciption>HDFS数据在网络上传输时是否加密,默认为false。如果Hadoop集群运行 在非安全网络上,
		可以考虑开启该参数,但会带来一些CPU开销。通常 Hadoop都会在私有网络内部署,不需要动该值。 
		</desciption>
	</property>
	
	<!--
	<property>
		<name>dfs.hosts </name>
		<value></value>
		<desciption>指定连接NN的主机的白名单。通常黑名单比较有用,例如在对DN进行 更换硬盘操作时,
		可以先将其加入黑名单进行摘除,等运维操作结束后再放行。
		</desciption>
	</property>

	<property>
		<name>dfs.hosts.exclude </name>
		<value></value>
		<desciption>指定连接NN的主机的黑名单。</desciption>
	</property>
	-->

	<property>
		<name>dfs.datanode.failed.volumes.tolerated</name>
		<value>0</value>
		<desciption>DN多少块盘损坏后停止服务,默认为0,即一旦任何磁盘故障DN即关闭。 
		对盘较多的集群(例如每DN12块盘),磁盘故障是常态,通常可以将该值设置为1或2,避免频繁有DN下线。
		</desciption>
	</property>

	<property>
		<name>dfs.namenode.avoid.read.stale.datanode</name>
		<value>true</value>
		<desciption>指示是否避免读取“过时”的数据节点(DataNode),这些数据节点(DataNode)的心跳消息在指定的时间间
		隔内未被名称节点(NameNode)接收。过时的数据节点(DataNode)将移动到返回供读取的节点列表的末尾。默认值是flase,
		推荐设置为true。
		</desciption>
	</property>

	<property>
		<name>dfs.namenode.avoid.write.stale.datanode</name>
		<value></value>
		<desciption>指示超过失效 DataNode 时间间隔 NameNode 未收到检测信号信息时是否避免写入失效 DataNode。
		写入应避免使用失效 DataNode,除非多个已配置比率 (dfs.namenode.write.stale.datanode.ratio) 的 DataNode 标记为失效。
		默认值是flase,推荐设置为true。
		</desciption>
	</property>

	<property>
		<name></name>
		<value></value>
		<desciption></desciption>
	</property>	
	
</configuration>
4.1.5 mapred-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
 
<configuration>
	<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
		<desciption></desciption>
	</property>
	
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>node1:10020</value>
		<desciption>jobhistory用于查询每个job运行完以后的历史日志信息,
		是作为一台单独的服务器运行的。可以在namenode或者datanode上的任意一台启动即可。</desciption>
    </property>
	
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>node1:19888</value>
		<desciption></desciption>
    </property>
	
</configuration>
4.1.6 slaves
master
node1
node2
node3
node4
node5
4.1. 7 yarn-site.xml
<?xml version="1.0"?>
 
<configuration>

	<!-- important start  -->
	<property>
		<name>yarn.scheduler.minimum-allocation-vcores</name>
		<value>1</value>
		<desciption>单个task可申请的最小虚拟CPU个数。默认值:1</desciption>
	</property>
	
	<property>
		<name>yarn.scheduler.maximum-allocation-vcores</name>
		<value>3</value>
		<desciption>单个task可申请的最大虚拟CPU个数。默认值:32</desciption>
	</property>
 
	<property>
		<name>yarn.nodemanager.resource.memory-mb</name>
		<value>1024</value>
		<desciption>每个节点可用的最大内存,RM中的两个值不应该超过此值。此数值可以用于计算container最大数目,
		即:用此值除以RM中的最小容器内存。虚拟内存率,是占task所用内存的百分比,默认值为2.1倍;
		注意:第一个参数是不可修改的,一旦设置,整个运行过程中不可动态修改,且该值的默认大小是8G,
		即使计算机内存不足8G也会按着8G内存来使用。默认值:8G /2.1
		</desciption>
	</property>
 
	<property>
		<name>yarn.nodemanager.resource.cpu-vcores</name>
		<value>3</value>
		<desciption>NodeManager总的可用虚拟CPU个数,此处表示1个CPU对应3个虚拟CPU。默认值:8</desciption>
	</property>

	<property>
		<name>yarn.scheduler.minimum-allocation-mb</name>
		<value></value>
		<desciption>单个容器可申请的最小内存,应用在运行申请内存时不能超过最大值,小于最小值则分配最小值,
		从这个角度看,最小值有点想操作系统中的页。最小值还有另外一种用途,计算一个节点的最大container数目注:
		这两个值一经设定不能动态改变(此处所说的动态改变是指应用运行时)。默认值:1024/8192 
		</desciption>
	</property>
	
	<property>
		<name>yarn.scheduler.maximum-allocation-mb</name>
		<value>43008</value>
		<desciption>单个容器可申请的最大内存</desciption>
	</property>
	<!-- important end  -->	
	

	<!-- yarn ha start  -->	
	<property>
		<name>yarn.resourcemanager.connect.retry-interval.ms</name>
		<value>2000</value>
		<desciption>rm连接失败的重试间隔</desciption>
	</property>
	
	<property>
		<name>yarn.resourcemanager.ha.enabled</name>
		<value>true</value>
		<desciption>open yarn ha</desciption>
	</property>
 
	<property>
		<name>yarn.resourcemanager.ha.automatic-failover.enabled</name>
		<value>true</value>
		<desciption>ha自动切换</desciption>
	</property>
	
 
	<property>
		<name>yarn.resourcemanager.ha.automatic-failover.embedded</name>
		<value>true</value> 
		<desciption>启用一个内嵌的故障转移,内置选举active,与ZKRMStateStore一起使用。</desciption>
	</property>	
	
	
	<property>
		<name>yarn.resourcemanager.ha.rm-ids</name>
		<value>rm1,rm2</value>
		<desciption>RMS逻辑id列表</desciption>
	</property>

	<property>
		<name>yarn.resourcemanager.zk-address</name>
		<value>node1:2181,node2:2181,node3:2181</value>
		<desciption>ha的状态存储地址</desciption>
	</property>
	<!-- yarn ha end  -->			
	
	<!-- rm1 start -->
	<property>
		<name>yarn.resourcemanager.hostname.rm1</name>
		<value>node1</value>
		<desciption></desciption>
	</property>
		
 	<property>
		<name>yarn.resourcemanager.address.rm1</name>
		<value>node1:8032</value>
		<desciption>resourcemanager对客户端暴露的地址,客户端通过该地址向RM提交应用程序,杀死应用程序</desciption>
	</property>
	
	<property>
		<name>yarn.resourcemanager.scheduler.address.rm1</name>
		<value>node1:8030</value>
		<desciption>resourcemanager对ApplicationMaster暴露的地址,ApplicationMaster通过该地址申请释放资源</desciption>
	</property>

	<property>
		<name>yarn.resourcemanager.webapp.https.address.rm1</name>
		<value>node1:8089</value>
		<desciption></desciption>
	</property>
 
	<property>
		<name>yarn.resourcemanager.webapp.address.rm1</name>
		<value>node1:8088</value>
		<desciption>resourcemanager对外web ui地址,用户可通过该地址在浏览器中查看集群各类信息</desciption>
	</property>
	
	<property>
		<name>yarn.resourcemanager.resource-tracker.address.rm1</name>
		<value>node1:8031</value>
		<desciption>resourcemanager对NodeManager暴露的地址,NodeManager通过该地址向RM汇报心跳,领取任务等。</desciption>
	</property>

	<property>
		<name>yarn.resourcemanager.admin.address.rm1</name>
		<value>node1:8033</value>
		<desciption>resourcemanager对管理员暴露的地址,管理员通过该地址,向RM发送命令</desciption>
	</property>
	<!-- rm1 end --> 
 
	<!-- rm2 start -->
	<property>
		<name>yarn.resourcemanager.hostname.rm2</name>
		<value>node2</value>
		<desciption></desciption>
	</property>
	
 	<property>
		<name>yarn.resourcemanager.address.rm2</name>
		<value>node2:8032</value>
		<desciption></desciption>
	</property>
	
	<property>
		<name>yarn.resourcemanager.scheduler.address.rm2</name>
		<value>node2:8030</value>
		<desciption></desciption>
	</property>

	<property>
		<name>yarn.resourcemanager.webapp.https.address.rm2</name>
		<value>node2:8089</value>
		<desciption></desciption>
	</property>
 
	<property>
		<name>yarn.resourcemanager.webapp.address.rm2</name>
		<value>node2:8088</value>
		<desciption></desciption>
	</property>
	
	<property>
		<name>yarn.resourcemanager.resource-tracker.address.rm2</name>
		<value>node2:8031</value>
		<desciption></desciption>
	</property>

	<property>
		<name>yarn.resourcemanager.admin.address.rm2</name>
		<value>node2:8033</value>
		<desciption></desciption>
	</property>
	<!-- rm2 end -->

	<!-- scheduler start -->
	<property>
		<name>yarn.resourcemanager.scheduler.class</name>
		<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value>
		<desciption>调度器实现类</desciption>
	</property>
	
	<property>
		<name>yarn.scheduler.fair.allocation.file</name>
		<value>fair-scheduler.xml</value>
		<desciption>改文件用于描述各个队列的属性,比如资源数量、权重等</desciption>
	</property>

	<property>
		<name>yarn.scheduler.fair.user-as-default-queue</name>
		<value>true</value>
		<desciption>当应用程序未指定队列名时,是否指定用户名作为应用程序所在队列的队列名,
		如果设置为false或未设置,所有未知队列的应用程序将被提交到default队列中,默认值true
		</desciption>
	</property>
 
	<property>
		<name>yarn.scheduler.fair.preemption</name>
		<value>true</value>
		<desciption>是否支持抢占</desciption>
	</property>
	
	<property>
		<name>yarn.scheduler.fair.sizebaseweight</name>
		<value>false</value>
		<desciption>在一个队列中分配资源时,默认情况下,采用公平轮询的方法将资源分配给各个应用程序,
		而该参数提供了另外一种资源分配方式:按照应用程序资源需求数目分配资源,即需求资源数量越多,
		分配的资源越多。默认值false
		</desciption>
	</property>

	<property>
		<name>yarn.scheduler.increment-allocation-mb</name>
		<value>256</value>
		<desciption>内存规整化单位,默认1024,这意味着如果一个container请求资源时1.5G,则将被调度规整化为700*256*256=768mb</desciption>
	</property>
 
	<property>
		<name>yarn.scheduler.assignmultiple</name>
		<value>true</value>
		<desciption>是否启动批量分配功能。当一个节点出现大量资源时,可以一次分配完成,也可以多次分配完成。默认情况下,该参数值为false。</desciption>
	</property>
	
	<property>
		<name>yarn.scheduler.fair.max.assign</name>
		<value></value>
		<desciption>开启批量分配功能,可指定一次分配的container数目。默认情况下,该参数值为-1,表示不限制。</desciption>
	</property>

	<property>
		<name>yarn.scheduler.fair.allow-undeclared-pools</name>
		<value>false</value>
		<desciption>是否允许创建未定义的资源池。如果设置成true,yarn将会自动创建任务中指定的未定义过的资源池。
		设置成false之后,任务中指定的未定义的资源池将无效,该任务会被分配到default资源池中。
		</desciption>
	</property>
	<!-- scheduler end -->
 
	<!-- content manager start -->
	<property>
		<name>yarn.nodemanager.local-dirs</name> 
		<value>/data/hadoop/yarn/local</value> 
		<desciption>中间结果存放位置,可配置为多硬盘,类似于1.0中的mapred.local.dir。
		注意,这个参数通常会配置多个目录,已分摊磁盘IO负载。默认值:${hadoop.tmp.dir}/nm-local-dir
		</desciption>	
	</property>

	<property>
		<name>yarn.nodemanager.log-dirs</name>
		<value>/data/hadoop/yarn/logs</value>
		<desciption>日志存放地址(可配置多个目录)。默认值:${yarn.log.dir}/userlogs</desciption>
	</property>

	<property>
		<name>yarn.log-aggregation-enable</name>
		<value>true</value>
		<description>开启application 日志聚合功能</description>
	</property>
 
	<property>
		<name>yarn.nodemanager.remote-app-log-dir</name>
		<value>/tmp/app-logs</value>
		<description>聚合日志在hdfs上的目录</description>
	</property>
	<!-- content manager end -->

	<!-- other start -->
	<property>
		<name>yarn.log-aggregation.retain-seconds</name>
		<value>259200</value>
		<description>设置聚合日志保存时间3天,1209600:half month</description>
	</property>

	<property>
		<name>yarn.nodemanager.address</name>
		<value>0.0.0.0:9103</value> 
		<description>The address of the container manager in the NM.</description>
	</property>
	<!--
	<property>
		<name>yarn.nodemanager.health-checker.script.path</name>
		<value>/share/hadoop/hadoop-2.7.2/conf/health-checker.sh</value>
		<desciption>健康检测脚本,脚本输出以error开头的字符串,则认为节点处于不健康状态</desciption>
	</property>
    -->
	<property>
		<name>yarn.nodemanager.aux-services</name>
		<value>mapreduce_shuffle</value>
		<desciption>nodemanager上运行的附属服务,需配置成mapreduce_shuffle,才可以运行MapReduce程序</desciption>
	</property>
	
	<property>
		<name>yarn.resourcemanager.cluster-id</name>
		<value>cluster1</value>
		<desciption>集群Id</desciption>
	</property>

	<property>
		 <name>yarn.resourcemanager.recovery.enabled</name>
       <value>true</value>
		<desciption>默认false,也就是说,如果resourcemanager挂了,相应正在运行任务的rm恢复后不能重新启动</desciption>
	</property>
 
	<property>
		<name>yarn.resourcemanager.store.class</name>
		<value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
		<desciption>配置RM状态信息存储方式:FileSystemRMSStateStore,MemoryRMStateStore,zkstore</desciption>
	</property>
	
	<property>
		<name>yarn.resourcemanager.zk.state-store.address</name>
		<value>node1:2181,node2:2181,node3:2181</value>
		<desciption>当使用ZK存储时,指定在zk上的存储地址</desciption>
	</property>

	<property>
		<name>yarn.app.mapreduce.am.scheduler.connection.wait.interval-ms</name>
		<value>5000</value>
		<desciption></desciption>
	</property>
 
	<property>
		<name>yarn.nodemanager.webapp.address</name>
		<value>0.0.0.0:8042</value>
		<desciption></desciption>
	</property>
	
	<property>
		<name>yarn.nodemanager.localizer.address</name>
		<value>0.0.0.0:8040</value>
		<desciption></desciption>
	</property>

	<property>
		<name>yarn.nodemanager.aux-services.manager.shuffle.class</name>
		<value>org.apache.hadoop.mapred.ShuffleHandeler</value>
		<desciption></desciption>
	</property>
 
	<property>
		<name>mapreduce.shuffle.port</name>
		<value>23080</value>
		<desciption></desciption>
	</property>
	
	<property>
		<name>yarn.app,mapreduce.am.staging-dir</name>
		<value>/user</value>
		<desciption></desciption>
	</property>

	<property>
		<name>yarn.web-proxy.address</name>
		<value>node1:8041</value>
		<desciption></desciption>
	</property>
	
	<property>
		<name>yarn.nodemanager.vmem-check-enabled</name>
		<value>false</value>
		<desciption>default:true, virtal mem check</desciption>
	</property>
	
	<property>
		<name>yarn.nodemanager.pmem-check-enabled</name>
		<value>false</value>
		<desciption>default:true,physical mem check</desciption>
	</property>
	
	<property>
		<name></name>
		<value></value>
		<desciption></desciption>
	</property>
 
</configuration>

4.2 ZooKeeper参考配置
zoo.cfg
tickTime=2000 
initLimit=10 
syncLimit=5 
dataDir=/data/zookeeper 
clientPort=2181
server.1=master:2888:3888
server.2=node1:2888:3888
server.3=node2:2888:3888
server.4=node3:2888:3888
server.5=node4:2888:3888
server.6=node5:2888:3888

————Blueicex 2020/3/14 11:35 blueice1980@126.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
org.apache.hadoop.hbase.DoNotRetryIOException: Unable to load configured region split policy 'org.apache.phoenix.schema.MetaDataSplitPolicy' for table 'SYSTEM.CATALOG' Set hbase.table.sanity.checks to false at conf or table descriptor if you want to bypass sanity checks at org.apache.hadoop.hbase.util.TableDescriptorChecker.warnOrThrowExceptionForFailure(TableDescriptorChecker.java:296) at org.apache.hadoop.hbase.util.TableDescriptorChecker.sanityCheck(TableDescriptorChecker.java:109) at org.apache.hadoop.hbase.master.HMaster.createTable(HMaster.java:2025) at org.apache.hadoop.hbase.master.MasterRpcServices.createTable(MasterRpcServices.java:657) at org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos$MasterService$2.callBlockingMethod(MasterProtos.java) at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:413) at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:133) at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:338) at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:318) org.apache.hadoop.hbase.DoNotRetryIOException: Unable to load configured region split policy 'org.apache.phoenix.schema.MetaDataSplitPolicy' for table 'SYSTEM.CATALOG' Set hbase.table.sanity.checks to false at conf or table descriptor if you want to bypass sanity checks at org.apache.hadoop.hbase.util.TableDescriptorChecker.warnOrThrowExceptionForFailure(TableDescriptorChecker.java:296) at org.apache.hadoop.hbase.util.TableDescriptorChecker.sanityCheck(TableDescriptorChecker.java:109) at org.apache.hadoop.hbase.master.HMaster.createTable(HMaster.java:2025) at org.apache.hadoop.hbase.master.MasterRpcServices.createTable(MasterRpcServices.java:657) at org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos$MasterService$2.callBlockingMethod(MasterProtos.java) at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:413) at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:133) at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:338) at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:318)
最新发布
07-14

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值