记得好像是年初的时候想学下NoSql,就google了下HBase的搭建步骤后就在虚拟机里面的OpenSuse搭了个HBase+Hadoop+Zookeeper的环境,过程不是很顺利,遇到各种问题,和刚开始学java连mysql的过程相比,是复杂得多了,这个地方确实是有值得优化的地方,如果能提供类似传统RDBMS的可视化的安装包,默认配置伪集群模式,一路傻瓜式的next安装,这样对于新手来说就降低了难度。因为那段时间工作挺忙的,所以在环境搭建好能在hbase shell下建表删表以及增删查改后就一直没再弄这个东西了,直到最近想换份这方面的工作,又开始捣鼓HBase来。下面按照我的记忆记录下目前遇到的一些的问题和解决的方法。
1.首先需要关闭防火墙
之前遇到zookeeper一直报错连不上HMaster,google了很久才发现是防火墙要关上
我的OS是OpenSuse,关闭防火墙的命令是 SuSEfirewall2 stop,其他的linux应该用sudo ufw disable就行了
2.如果你用SecureCRT之类的软件连接里面的linux那要记得开启ssh
命令是service sshd start
3.配置hadoop的core-site.xml
我是这样配置的:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://hbase:9666</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hehe/softs/hadoop</value>
</property>
</configuration>
我在hosts文件里面配了一条
(我的物理ip) hbase
所以就hdfs://hbase:9666这样配了,我之前用过hdfs://localhost:9666或者hdfs://127.0.0.1总是报错,像上面这样弄就没报错了。
如果用本地文件系统的话,file://(文件路径),这样也行,这种方式只能用于单机非分布式模式
4.配置hadoop的mapred-site.xml
我是这样配置的:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>hbase:9001</value>
</property>
</configuration>
5.配置hadoop的masters和slaves
masters文件就配了个hbase,slaves配了个localhost
6.配置hadoop的hdfs-site.xml
开发环境默认就行,生产环境dfs.replication一般配成3
7.报错:could only be replicated to 0 nodes, instead of 1
因为之前安装其他版本遗留下来的垃圾数据有影响,根据日志提示的那个目录,把那个目录下的文件都删除即可
8.报错:getMaster attempt 2 of 10 failed; retrying after sleep of 1000 of Hbase
把hosts文件中127.0.0.1改成物理ip,类似把
127.0.0.1 localhost
127.0.0.1 linux-vhx8
改成
(物理ip) localhost
(物理ip) linux-vhx8
9.启动\停止顺序
启动:hadoop(sh start-all.sh) -> zookeeper(sh zkServer.sh start) -> hbase(sh start-hbase.sh)
停止:hbase(sh start-hbase.sh) -> zookeeper(sh zkServer.sh start) -> hadoop(sh start-all.sh)
10.hadoop和hbase、zookeeper都启动完之后用jps应该看到以下进程:
linux-vhx8:~ # jps
11613 Jps
5589 HMaster
4692 NameNode
5391 QuorumPeerMain
5150 TaskTracker
5028 JobTracker
5697 HRegionServer
4834 DataNode
4957 SecondaryNameNode
11.你的mapreduce程序打包成jar包内引用的hadoop和hbase的jar包的版本要和搭建的环境的hadoop、hbase的jar包的版本要一致,否则也会报错