目前正在做Hadoop的项目,这周进度推进到HBase的伪分布式。通过eclipse编程试图向HBase中添加数据。但是总是遇上ZooKeeperSaslClient SecurityException的问题。
于是先在shell上试图配置HBase的伪分布式,查看日志后发现还是有这个问题。查了很多资料,直到现在方才解决。
以下给出HDFS + HBase的具体配置和命令:
1) hadoop/conf/core-site.xml
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
2) hadoop/conf/hdfs-site.xml
<configuration>
<property>
<name>dfs.datanode.max.xcievers</name>
<value>4096</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
3) hadoop/conf/mapred.xml
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
</configuration>
4) hbase/conf/hbase-site.xml
<configuration>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.rootdir</name>
<value>hdfs://localhost:9000/hbase</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
5) hbase/conf/hbase-env.sh
export HBASE_CLASSPATH=/home/wzp/hadoop/conf
export HBASE_MANAGES_ZK=true
6) 先运行start-dfs.sh,后运行start-hbase.sh。则可以在HDFS上建立HBase。
虽然问题得到解决,但是还是不知道为什么会出现SASL的异常。
此外,根据HBase自带manual,hbase.rootdir的端口应为8020。首先这个端口做不出来,其次这个端口明显不合理,因为HDFS中配置的端口为9000,如果HBase建立在HDFS上,那必然是通过9000端口通过的。话虽如此,但实际原因我仍然不知道。
对manual都存在这么多问题表示很无奈。