整套大数据学习资料(视频+笔记)百度网盘无门槛下载:http://www.edu360.cn/news/content?id=3377

13.7.1 版本

hadoop 花牛 10℃ 0评论

一直到HBase 0.20,HBase的版本都对应于Hadoop的版本。某个版本的HBase能够和任何“小版本”(minor version)相同的Hadoop共同运行。小版本就是两个小数点之间的数字(如,HBase 0.20.5的小版本是20)。HBase0.20.5 可以和 Hadoop 0.20.2—起运行,但 HBase 0.19.5 不能和 Hadoop 0.20.0—起运行。

但从HBase 0.90开始,两者之间的联系不复存在。Hadoop的开发周期也变长了,和HBase的开发周期不再匹配。此外,改变版本号联系还有一个原因是想让一个HBase版本可以运行在多版本的Hadoop上。例如,HBase

0.90.x 在 Hadoop 0.20.x 和 0.21 .x 上者[5能运行。

这意味着必须保证运行的HadoopHBase版本是兼容的。请检查下载版本 的“要求”(requirement)—节。如果运行不兼容的版本,幸运的话,系统会抛出异常,报告版本不兼容。如果两者相互之间根本不能交换版本信息,

你会发现HBase集群在启动后很快就挂在那里,停止运行。以上两种情况还会在系统升级时碰到。升级后,由于清除得不干净,仍然可以在类路径 上找到老版本HBaseHadoop

HBase使用HDFS的方式与MapReduce使用HDFS的方式截然不同。在MapReduce中,首先打开HDFS文件,然后map任务流式处理文件的内 容,最后关闭文件。在HBase中,数据文件在启动时就被打开,并在处理 过程中始终保持打开状态,这是为了节省每次访问操作打开文件所需的代价。所以,HBase更容易碰到MapReduce客户端不常碰到的问题:

1. 文件描述符用完 

由于我们在连接的集群上保持文件的打开状态,所以用不了太长时间就可 能达到系统和Hadoop设定的限制。例如,我们有一个由三个节点构成的集 群,每个节点上运行一个datanode实例和一个regionserver如果我们正在 运行一个加载任务,表中有100个区域和10个列族。我们允许每个列族平 均有两个“刷入文件”flush file)。通过计算,我们知道同时打开了 10010x2,即2000个文件。此外,还有各种外部扫描器和java库文件占用了 其他文件描述符。每个打开的文件在远程datanode上至少占用一个文件描 述符。一个进程默认的文件描述符限制是1024。当我们使用的描述符个数 超过文件系统的值,我们会在日志中看到“Too many open files”(打幵了太多文件)的错误信息。但在这之前,往往就已经能看出HBase的行为 不正常,而发生哪种错误行为是不一定的。要修正这个问题需要增加文件 描述符的参数值。可以通过査看regionserver日志的前几行来确定 运行中的HBase是否设置了足够多的文件描述符。日志中列出系统的重要 组件(如使用的JVM)以及环境设置(如描述符的ulimit值)。

2. datanode上的线程用完

和前面的情况类似,Hadoopdatanode上同时运行的线程数不能超过256 这一限制值。给定前面所描述的表的统计值,我们很容易看到很快就会达 到这一限制值,因为在本书写作时,在datanode中,每—个文件块的打开连接都会使用一个线程。如果査看datanode日志,会看到“xceiverCount 258 exceeds the limit of concurrent xcievers 256”(xceiverCount258 超过了并 发xcievers的256限制)这样的出错信息。同样,很可能在你看到日志中的出错信息之前,HBase的行为就已经出错了。这时需要在HDFS中把 dfs.datanode.max.xcievers的值调高,并重启集群。

3. Sync

必须在有可用syncHDFS上使用HBase。否则会丢失数据。这意味着需 要在Hadoop 0.20.205.0或后续版本上运行HBase

转载请注明:全栈大数据 » 13.7.1 版本

喜欢 (0)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址