如上文所述,搭建集群使用过了vmware,虽然Hadoop成功运行,但是到hbase里面,虽然使用了最正统的方法,我找到官方指导安装的网址:。
照着上面的步骤一步步的解决,但是最后错误频发,没有找到解决方案。
1、bin/stop-hbase.sh 命令后,一直小圆点,进程结束不了。后来查遍了几乎所有的google上此类问题,发现是Hmaster没有搞定,这才记起可以用jps命令查看进程情况,一查看,果然是那样,没有Hmaster进程。
2、进入shell后,建表以及其他操作,都提示
ERROR:org.apache.hadoop.hbase.MasterNotRunning:Null
在logs里可以看到org.apache.hadoop.hbase.master.HMaster: Unhandled exception. Starting shutdown
遍查google,发现了N中解决方案:
1)确认hbase.rootdir与hdfs.xml里面的dfs.name是否一直
2)关闭防火墙:sudo ufw disable
3)在windows主机名:c:\windows\system32\drivers/etc 加入各主机名(最后发现,原来是cywin使用者出现的问题,汗)
4)注释掉/etc/hosts里的localhost,最后发现,没必要
5)开始换版本的组合,从hadoop20.2换到hadoop20.203.0,又把hbase从90.3的一般版本换到stable版本,仍然不行。
3、最后发现的两个致命错误,这个是真实存在的
1)使用hadoop和hbase的用户,由于文件的权限限制,一直使用root用户,最后发现root会导致一些错误的产生。最后所有的机子新建grid用户。
2)本文的题目。从VMware到visual Box,这是关键所在,换完虚拟机版本,所有问题迎刃而解,发觉困扰半周的问题居然就在这里!(版本害死人啊!!!)
建立过程(参考一网友)
当然,java,hadoo之类已经建好。我最后用了三台机子
namenode:192.168.122.136 用户名ubn
datanode1:192.168.122.140 ub1
datanode2:192.168.122.141 ub2
java路径:/home/grid/java/jdk
hadoop路径:/home/grid/hadoop
hbase路径:/home/grid/hbase
下载hbase-0.20.2.tar.gz, 解压到预设目录即可。我的目录:/home/grid/hbase/
解压完成更改文件名 mv hbase0.90.3 hbase (这样便于设置各种变量,后面带一大串数字的文件夹名,引用时很容易出错,这也算是最大的新的)
1、修改conf/hbase-env.sh
export JAVA_HOME=/home/grid/java/jdk
export HBASE_CLASSPATH=/home/grid/hadoop/conf
export HBASE_MANAGES_ZK=true
HBASE_MANAGES_ZK选择了tru,让机子自己管理zookeeper
2、修改hbase-site.xml,增加以下内容
<property>
<name>hbase.rootdir</name>
<value>hdfs://ubn/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
其中: hbase.rootdir:“hdfs://ubn:9000”这部分必须和hadoop-config/core-site.xml中的fs.default.name保持一致;
3、把/home/grid/hadoop/conf/hdfs-site.xml文件拷贝至hbase的conf文件夹下
4、在conf/regionservers中添加hadoop-config/conf/slaves中所有的datanode节点。
5、删除/hbase/lib/hadoop-core-0.20-append-r1056497.jar
拷贝/hadoophadoop-0.20.0-core.jar到/hbase-0.90.2/lib/
6、最后,把配置好的hbase,拷贝到其它节点 scp
运行
Hadoop、ZooKeeper和HBase之间应该按照顺序启动和关闭:启动Hadoop->启动HBase—>停止HBase—>停止Hadoop。
执行bin/start-hbase.sh和bin/stop-hbase.sh 脚本启动和停止HBase服务。
测试,hbase shell,测试:
list 列出所有表
create 建表,如 create 'test','data'
put 插入数据