安装单机habase报错,好像是zookeeper ha原理问题,单机还需要zookeeper ha原理么

Apache ZooKeeper Resilience at Pinterest - Cloudera Engineering Blog
Best practices, how-tos, use cases, and internals from Cloudera Engineering and the community
Categories
Select Month
March 2017
February 2017
January 2017
December 2016
November 2016
October 2016
September 2016
August 2016
April 2016
March 2016
February 2016
January 2016
December 2015
November 2015
October 2015
September 2015
August 2015
April 2015
March 2015
February 2015
January 2015
December 2014
November 2014
October 2014
September 2014
August 2014
April 2014
March 2014
February 2014
January 2014
December 2013
November 2013
October 2013
September 2013
August 2013
April 2013
March 2013
February 2013
January 2013
December 2012
November 2012
October 2012
September 2012
August 2012
April 2012
March 2012
February 2012
January 2012
December 2011
November 2011
October 2011
September 2011
August 2011
April 2011
March 2011
February 2011
January 2011
December 2010
November 2010
October 2010
September 2010
August 2010
April 2010
March 2010
February 2010
January 2010
December 2009
November 2009
October 2009
September 2009
August 2009
April 2009
March 2009
February 2009
January 2009
December 2008
November 2008
October 2008CentOS 7Hadoop2.6.5 Zookeeper3.4.9 JDK1.8
master作为active主机,data1作为standby备用机,三台机器均作为数据节点,yarn资源管理器在master上开启,在data1上备用,data1上开启历史服务器
主要参考见下表
192.168.1.215
Namenode DataNode QuorumPeerMain ZKFC JournalNode ResourceManager NodeManager
192.168.1.218
Namenode DataNode QuorumPeerMain ZKFC JournalNode ResourceManager NodeManager JobHistoryServer ApplicationHistoryServer
192.168.1.219
DataNode QuorumPeerMainJournalNodeNodeManager
2、zookeeper集群的搭建
安装到/usr/Apache目录下,所有者与所属组均为hadoop
tar -zxvf zookeeper-3.4.9.tar.gz -C /usr/Apache/ln -s zookeeper-3.4.9/ zookeepercd zookeeper/conf# 配置文件cp zoo_sample.cfg zoo.cfg
# 编辑zoo.cfg的内容# The number of milliseconds of each ticktickTime=2000# The number of ticks that the initial # synchronization phase can takeinitLimit=10# The number of ticks that can pass between # sending a request and getting an acknowledgementsyncLimit=5# the directory where the snapshot is stored.# do not use /tmp for storage, /tmp here is just # example sakes.dataDir=/usr/Apache/zookeeper/datadataLogDir=/usr/Apache/zookeeper/data/log# the port at which the clients will connectclientPort=2181# the maximum number of client connections.# increase this if you need to handle more clientsmaxClientCnxns=60## Be sure to read the maintenance section of the # administrator guide before turning on autopurge.## http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance## The number of snapshots to retain in dataDirautopurge.snapRetainCount=3# Purge task interval in hours# Set to &0& to disable auto purge featureautopurge.purgeInterval=1#server.1=master:server.2=data1:server.3=data2:
一般采用默认值,重点是标蓝的地方。
数据的路径单独设,将日志分开,并且,不要放到默认的tmp文件夹下面,因为这个会定期删除
=/usr/Apache/zookeeper/
dataLogDir
=/usr/Apache/zookeeper/data/
将快照打开,并且设置
autopurge.purgeInterval
与上面的不同,快照需要定期删除
增大客户端的连接数量
maxClientCnxns
先安装到master下面,之后进行分发
scp -r zookeeper-3.4.9 data1:usr/Apache/scp -r zookeeper-3.4.9 data2:usr/Apache/# 注意所属组与所有者chown -R hadoop:hadoop zookeeper# 三台机器分别启动zkServer.sh start# 查看状态zkServer.sh status# 最后,检查,关闭一个看是否自动选举
3、hadoop以及yarn的高可用配置
先前安装过,主要是配置文件的修改,注意,如果不重新安装,需要删除一些文件 rm -rf tmp/* data/nn/* data/jn/* data/dn/* data/dn/* logs/*
上面的data/nn data/jn data/dn data/dn 是自己建的一些文件,用于节点数据的存放。
重新安装也不麻烦,此处选择重新安装,目录选择/usr/Apache,所有者与所属组均为hadoop,环境变量如下:
更改环境变量,hadoop用户下面的~/.bashrc文件export HADOOP_HOME=/usr/Apache/hadoopexport ZOOKEEPER_HOME=/usr/Apache/zookeeperexport HADOOP_COMMON_HOME=$HADOOP_HOMEexport HADOOP_HDFS_HOME=$HADOOP_HOMEexport HADOOP_MAPRED_HOME=$HADOOP_HOMEexport HADOOP_YARN_HOME=$HADOOP_HOMEexport HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoopexport CLASSPATH=.:$HADOOP_HOME/lib:$CLASSPATHexport PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$ZOOKEEPER_HOME/bin# 之后source ~/.bashrc
下面关键看配置
1& core-site.xml
&configuration&&!--缓存文件存储的路径,可以这样写file:/opt/mdisk/disk02/data/tmp,file:/opt/mdisk/disk01/data/tmp--&&!--如果挂载多个数据盘,用逗号分开--&&!--配置缓存文件的目录,注意另建新的文件夹tmp,不要在hadoop/tmp下,因为会定期删除--&&property&&name&hadoop.tmp.dir&/name&
&value&/usr/Apache/hadoop/data/tmp&/value&
&description&A base for other temporary directories.&/description&&/property&&!--指定nameservice的名称,自定义,但后面必须保持一致--&&property&
&name&fs.defaultFS&/name&
&value&hdfs://nscluster&/value&&/property&&!-- 编辑日志文件存储的路径,这个也可以放到hdfs-site.xml中 --&&property&
&name&dfs.journalnode.edits.dir&/name&
&value&/usr/Apache/hadoop/data/jn&/value&&/property&&!--文件读写缓存大小,此处为128kb--&&property&
&name&io.file.buffer.size&/name&
&value&131072&/value&&/property&&!--指定zookeeper地址,配置HA时需要,这个也可以放到hdfs-site.xml中--&&!--&property&
&name&ha.zookeeper.quorum&/name&
&value&master:2181,data1:2181,data2:2181&/value&&/property&--&&!--以下不是必须的--&&!--配置hdfs文件被永久删除前保留的时间(单位:分钟),默认值为0表明垃圾回收站功能关闭--&&!--&property&
&name&fs.trash.interval&/name&
&value&0&/value&&/property&--&&!--指定可以在任何IP访问--&&!--&property&
&name&hadoop.proxyuser.hduser.hosts&/name&
&value&*&/value&&/property&--&&!--指定所有用户可以访问--&&!--&property&
&name&hadoop.proxyuser.hduser.groups&/name&
&value&*&/value&&/property&--&&/configuration&
这里要注意hadoop.tmp.dir这个属性,上面的注释也已经说了,一定不要放到暂时的hadoop/tmp中,而要放到永久的文件夹中,否则namenode的启动可能遇到问题。
上面一些注释掉的属性不是必须的,下面一样。
2& hdfs-site.xml
注意下面的nscluster是自定义的名称,并且被应用于多个属性中,
部署使用时更改样式
&configuration&&!--指定hdfs元数据存储的路径--&&property&
&name&dfs.namenode.name.dir&/name&
&value&file:/usr/Apache/hadoop/data/nn&/value&&/property&&!--指定hdfs数据存储的路径--&&property&
&name&dfs.datanode.data.dir&/name&
&value&file:/usr/Apache/hadoop/data/dn&/value&&/property&&!--开启WebHDFS功能(基于REST的接口服务)--&&property&
&name&dfs.webhdfs.enabled&/name&
&value&true&/value&&/property&&!-- 数据备份的个数 --&&property&
&name&dfs.replication&/name&
&value&3&/value&&/property&
&!--关闭权限验证 --&&property&
&name&dfs.permissions.enabled&/name&
&value&false&/value&&/property&&!--DateNode上的服务线程数,处理rpc,默认为10,可以调大--&&property&
&name&dfs.datanode.handler.count&/name&
&value&200&/value&&/property&&!--文件操作的线程数,如果处理文件有很多,则调大,建议值8192--&&property&
&name&dfs.datanode.max.transfer.threads&/name&
&value&8192&/value& &/property&&!--不用的数据节点,添加到excludes文件,方法同slaves文件,之后执行hadoop dfsadmin -refreshNodes命令--&&property&
&name&dfs.hosts.exclude&/name&
&value&/usr/Apache/hadoop/etc/hadoop/excludes&/value&&/property&&!--以下为ha的相关配置--&&!-- 指定hdfs的nameservice的名称为nscluster,务必与core-site.xml中的逻辑名称相同 --&&property&
&name&dfs.nameservices&/name&
&value&nscluster&/value&&/property&
&!-- 指定nscluster的两个namenode的名称,分别是nn1,nn2,注意后面的后缀.nscluster,这个是自定义的,如果逻辑名称为nsc,则后缀为.nsc,下面一样 --&&property&
&name&dfs.ha.namenodes.nscluster&/name&
&value&nn1,nn2&/value&&/property&
&!-- 配置nn1,nn2的rpc通信 端口
--&&property&
&name&dfs.namenode.rpc-address.nscluster.nn1&/name&
&value&master:9000&/value&&/property&&property&
&name&dfs.namenode.rpc-address.nscluster.nn2&/name&
&value&data1:9000&/value&&/property&
&!-- 配置nn1,nn2的http访问端口 --&&property&
&name&dfs.namenode.http-address.nscluster.nn1&/name&
&value&master:50070&/value&&/property&&property&
&name&dfs.namenode.http-address.nscluster.nn2&/name&
&value&data1:50070&/value&&/property&
&!-- 指定namenode的元数据存储在journalnode中的路径 --&&property&
&name&dfs.namenode.shared.edits.dir&/name&
&value&qjournal://master:8485;data1:8485;data2:8485/nscluster&/value&&/property&
&!-- 开启失败故障自动转移 --&&property&
&name&dfs.ha.automatic-failover.enabled&/name&
&value&true&/value&&/property&
&!-- 配置失败自动切换的方式 --&&property&
&name&dfs.client.failover.proxy.provider.nscluster&/name&
&value&org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider&/value&&/property&
&!-- 配置zookeeper地址,如果已经在core-site.xml中配置了,这里不是必须的 --&&property&
&name&ha.zookeeper.quorum&/name&
&value&master:2181,data1:2181,data2:2181&/value&&/property&&!-- 配置隔离机制 --&&property&
&name&dfs.ha.fencing.methods&/name&
&value&sshfence&/value&&/property&&!-- 指定秘钥的位置 --&&property&
&name&dfs.ha.fencing.ssh.private-key-files&/name&
&value&/home/hadoop/.ssh/id_rsa&/value&&/property&
&!--配置sshfence隔离机制超时时间--&&property&&name&dfs.ha.fencing.ssh.connect-timeout&/name&
&value&30000&/value&&/property&&!--保证数据恢复--&&!--&property&
&name&dfs.journalnode.http-address&/name&
&value&0.0.0.0:8480&/value&&/property&--&&!--&property&
&name&dfs.journalnode.rpc-address&/name&
&value&0.0.0.0:8485&/value&&/property& --&&/configuration&
3& mapred-site.xml
&configuration&
&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 web ui 地址, 默认端口19888--&&property&
&name&mapreduce.jobhistory.webapp.address&/name&
&value&0.0.0.0:19888&/value&&/property&&!--不用的数据节点,添加到excludes文件,之后执行hadoop dfsadmin -refreshNodes命令,--&&!--协同hdfs-site.xml中的dfs.hosts.exclude属性--&&property&
&name&mapred.hosts.exclude&/name&
&value&/usr/Apache/hadoop/etc/hadoop/excludes&/value&&/property&&property&
&name&mapreduce.job.ubertask.enable&/name&
&value&true&/value&&/property&&/configuration&
注意上面 0.0.0.0:19888 这种写法,不能简单的写为19888,否则历史服务器不能访问
--------------------------------------分割线 --------------------------------------
下面关于 Hadoop 的文章您也可能喜欢,不妨看看:
Ubuntu14.04下Hadoop2.4.1单机/伪分布式安装配置教程 /Linux/487.htm
CentOS安装和配置Hadoop2.2.0 /Linux/85.htm
CentOS 6.3下Hadoop伪分布式平台搭建 /Linux/789.htm
Ubuntu 14.04 LTS下安装Hadoop 1.2.1(伪分布模式) /Linux/406.htm
Ubuntu上搭建Hadoop环境(单机模式+伪分布模式) /Linux/81.htm
实战CentOS系统部署Hadoop集群服务 /Linux/246.htm
单机版搭建Hadoop环境图文教程详解 /Linux/27.htm
Hadoop 2.6.0 HA高可用集群配置详解 /Linux/180.htm
Spark 1.5、Hadoop 2.7 集群环境搭建 /Linux/067.htm
--------------------------------------分割线 --------------------------------------
4& yarn-site.xml
&configuration&&!-- Site specific YARN configuration properties --&&!--NodeManager上运行的附属服务,需配置成mapreduce_shuffle才可运行MapReduce程序--&&property&
&name&yarn.nodemanager.aux-services&/name&
&value&mapreduce_shuffle&/value&&/property&&!-- 开启日志聚集功能 --&&property&
&name&yarn.log-aggregation-enable&/name&
&value&true&/value&&/property&&!-- 日志删除时间 -1禁用,单位为秒 --&&property&
&name&yarn.log-aggregation.retain-seconds&/name&
&value&604800&/value&&/property&&!--修改日志目录hdfs://mycluster/var/log/hadoop-yarn/apps,当应用程序运行结束后,日志被转移到的HDFS目录(启用日志聚集功能时有效)--&&property&
&name&yarn.nodemanager.remote-app-log-dir&/name&
&value&/logs&/value&&/property&&!-- yarn内存,配置nodemanager可用的资源内存 --&&!--&property&
&name&yarn.nodemanager.resource.memory-mb&/name&
&value&8192&/value&&/property&--&&!-- yarn
cpu,配置nodemanager可用的资源CPU --&&!--&property&
&name&yarn.nodemanager.resource.cpu-vcores&/name&
&value&8&/value&&/property&--&&!--以下为ha配置--&&!-- 开启yarn ha --&&property&
&name&yarn.resourcemanager.ha.enabled&/name&
&value&true&/value&&/property&&!-- 指定yarn ha的名称 --&&property&
&name&yarn.resourcemanager.cluster-id&/name&
&value&nscluster-yarn&/value&&/property&&!--启用自动故障转移--&&property&
&name&yarn.resourcemanager.ha.automatic-failover.enabled&/name&??
&value&true&/value&&/property&&!-- resourcemanager的两个名称 --&&property&
&name&yarn.resourcemanager.ha.rm-ids&/name&
&value&rm1,rm2&/value&&/property&&!-- 配置rm1、rm2的主机
--&&property&
&name&yarn.resourcemanager.hostname.rm1&/name&
&value&master&/value&&/property&&property&
&name&yarn.resourcemanager.hostname.rm2&/name&
&value&data1&/value&&/property&&!-- 配置yarn web访问的端口 --&&property&
&name&yarn.resourcemanager.webapp.address.rm1&/name&
&value&master:8088&/value&&/property&&property&
&name&yarn.resourcemanager.webapp.address.rm2&/name&
&value&data1:8088&/value&&/property&&!-- 配置zookeeper的地址 --&&property&
&name&yarn.resourcemanager.zk-address&/name&
&value&master:2181,data1:2181,data2:2181&/value&&/property&&!-- 配置zookeeper的存储位置 --&&property&
&name&yarn.resourcemanager.zk-state-store.parent-path&/name&
&value&/rmstore&/value&&/property&&!--
yarn restart--&&!-- 开启resourcemanager restart --&&property&
&name&yarn.resourcemanager.recovery.enabled&/name&
&value&true&/value&&/property&&!-- 配置resourcemanager的状态存储到zookeeper中 --&&property&
&name&yarn.resourcemanager.store.class&/name&
&value&org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore&/value&&/property&&!-- 开启nodemanager restart --&&property&
&name&yarn.nodemanager.recovery.enabled&/name&
&value&true&/value&&/property&&!-- 配置rpc的通信端口 --&&property&
&name&yarn.nodemanager.address&/name&
&value&0.0.0.0:45454&/value&&/property&&!--配置Web Application Proxy安全代理(防止yarn被攻击)--&&property&&name&yarn.web-proxy.address&/name&&value&0.0.0.0:8888&/value&&/property&&/configuration&
A. yarn.nodemanager.address这个属性0.0.0.0:45454,在2.6的版本中不要只写成45454,否则会导致nodemanager启动不了
B. yarn.nodemanager.resource.memory-mb与yarn.nodemanager.resource.cpu-vcores这两个属性,可以默认,在目前的hadoop版本中,如果设置不当,会导致mapreduce程序呈现accepted但是不能run的状态。在试验中,2cpu,1G内存的配置就出现了这种情况。当设置为8cpu,8G内存时却正常了,即使这不是机器的真实配置。针对这种情况,另一个解决方案是添加yarn.scheduler.minimum-allocation-mb这个属性:
&property&
&name&yarn.nodemanager.resource.memory-mb&/name&
&value&2200&/value&
&description&Amount of physical memory, in MB, that can be allocated for containers.&/description&&/property&&property&
&name&yarn.scheduler.minimum-allocation-mb&/name&
&value&500&/value&&/property&
由于资源问题而导致的这种情况可参考以下:
/questions//mapreduce-jobs-get-stuck-in-accepted-state
/HDPDocuments/HDP2/HDP-2.0.9.1/bk_installing_manually_book/content/rpm-chap1-11.html
/blog/how-to-plan-and-configure-yarn-in-hdp-2-0/
C. 如果日志设置不当,也会出现maprduce不能运行的情况。将yarn.log-aggregation-enable属性设置为true,开启日志聚集功能,则需要设置yarn.nodemanager.remote-app-log-dir属性,即聚集后的日志存放的路径。注意上面将属性设置为/logs,标识的是在hdfs中的目录(不需要自己建立,系统需要时自己会根据配置文件创建),而非本地。下图显示了程序运行后生成的日志:
5& hadoop-env.sh
设置一些重要的环境变量,设置内存的大小等,视情况而定
export JAVA_HOME=/usr/java/jdkexport HADOOP_PORTMAP_OPTS=&-Xmx1024m $HADOOP_PORTMAP_OPTS&export HADOOP_CLIENT_OPTS=&-Xmx1024m $HADOOP_CLIENT_OPTS&..............
更多详情见请继续阅读下一页的精彩内容
: /Linux/430p2.htm
最新教程周点击榜
微信扫一扫

我要回帖

更多关于 zookeeper 实现ha 的文章

 

随机推荐