时隔一年多,还来重新弄弄Hadoop,因为工作当中涉及到相关的Hadoop平台及相关技术。。今天先整了Hadoop和HBase,后面找时间再将其他整合进来.
本文也是借鉴了不少帖子,主要是@davelam1991的hadoop2.6和hbase1.0单机版安装配置(http://blog.youkuaiyun.com/xanxus46/article/details/45133977),感谢@davelam1991!!
基本上按照@davelam1991的经验贴步骤,只是我这边的Hadoop和HBase版本有所不同,是比较新的版本,所以中间过程出了一丁点问题,包括(1) Failed to start secondary namenode
org.apache.hadoop.hdfs.server.common.InconsistentFSStateException(2)WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable。待会在后文中再说说原因和解决办法。(3)回头一试的时候,又发现找不到datanode了,又查了一通比较坑爹。。
本文不打算复述经验贴的内容,小伙伴们直接看原帖哈~
环境
系统:Ubuntu 14.04
hadoop版本:2.7.1
hbase版本:1.1.2
jdk版本:1.8
Hadoop和HBase安装
基本是跟着经验贴步骤来,注意几个小地方(1)路径问题,指定并配置好你的Hadoop和HBase目录
(2)Hadoop安装那里提到一个主从节点配置的,即 14.修改masters和slaves ,,貌似可以不理它,可能因为这里伪分布式不要考虑吧。我这里没改。
(3)15.添加临时目录 那里添加完,要记得修改tmp文件夹的权限,可仿照 步骤 7那样去修改。我忽略这个tmp的权限问题,所以就导致了第一个错误“secondary namenode问题”。应该有人问dfs的权限为什么没改,其实在hdfs-site.xml那里有设置了dfs.permissions属性为false,我猜是默认随意访问了。。当然有需要的话直接chmod/chown都ok的。
(4)其他的直接跟步骤走就得了。。开头提到的第二个问题,经摆渡,说是这个原因是因为官方提供的lib目录中.so文件是在32位系统下编译的,如果是64位系统,需要自己下载源码在64位上重新编译。。但貌似没太大影响,警告而已。需要用ant或maven重新编译,要涉及挺多工具库的,然后还有其他事要弄,我就没去折腾了。改天再来补上。
(5)后面jps查进程时,发现datanode没了。原因为执行了两三次格式化,造成datanode的clusterID 和 namenode的clusterID 不匹配(错误信息可以参看logs里的日志)。两个方案可以参考,我用了简单粗暴的删除。。
1是.进入每个datanode的 dfs.data.dir 的 current目录,修改里面的文件VERSION
里面有个 namespaceID 将其修改成为报错信息中的 namenode namespaceID = 971169702 相同的 namespaceID .
然后重新启动 datanode全部都能正常启动了。
2是.直接删除每个datanode 上面 dfs.data.dir目录下所有的文件,,当然这只是实验环境可随便删,生产环境就不要手贱了。。
(6)还有一个小担心,因为打算装2.7.1+1.1.2 版本的hadoop和hbase时,还用的是最新的jdk8(听说1.1.2的hbase还没和jdk8充分测试。。),是担心bug和bug的,,也查了一些版本搭配的帖子。不过还是装了,后面用的时候再等问题来找了。我这里把 Hbase对Hadoop/jdk的要求 文档地址贴一下,有需要的可以自行查阅(http://hbase.apache.org/book.html#basic.prerequisites)
就写这么多吧,希望有所帮助,欢迎小伙伴一起探讨交流!