您的位置:首页 > 运维架构

Hadoop HBase 伪分布式安装 配置

2013-04-25 09:52 375 查看
最近需要配置一个 HDFS 和 HBase 环境,看了网上别人写的博客内容之后发现。很多人写的根本不对,少了步骤,或者根本就是错的,或者配置文件根本写的不对。导致我自己不断出现问题无法搭建出稳定的 HDFS 环境。由于采用伪分布式安装,按照网上的教程安装之后,启动HDFS,有时候Namenode未启动,有时候Datanode未启动,运行HBase后,有时候HMaster未启动,有时候根本进了HBase Shell之后任何命令都报错。非常郁闷。所以必须自己写一篇安装教程。

如果你安装了Hadoop与HBase之后可以正常运行,但是重启电脑之后,出现以下几种状况: 1) Hadoop的Namenode没有运行  2) Hadoop的Datanode没有运行  3) HBase的HMaster没有运行  4) 电脑重启后HBase Shell任何命令都会报错,  那么你的Hadoop和HBase一定存在配置问题。

对于Hadoop与HBase,正常的效果应当是,HBase将数据内容保存在HDFS上(也可以保存在本地),重启电脑之后任然可以取得之前存储的数据(前几天我安装的HBase连这点都做不到....)

1. Hadoop配置

安装的具体细节就不说了。无非就是下载tar包,拷贝至/usr/local/目录,更改文件所有者。ssh-keygen产生公钥密钥,这些都不说了。

配置 hadoop-env.sh , 将 
export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_21
这一句添加上去。路径根据个人情况设置。

配置 core-site.xml, 这一步非常重要,尤其是hadoop.tmp.dir变量,最好配置在本地/home/username/路径下,如果不对其配置,重启电脑后,HDFS上存放的数据将会丢失。hadoop.tmp.dir属性
<?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://localhost:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hduser/tmp</value>
</property>
</configuration>


配置 hdfs-site.xml, 这个文件用来设置冗余块的数量,由于是伪分布式安装,设为1就可以了,全分布式的情况下设为3比较合理。
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>


配置 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>localhost:9001</value>
</property>
</configuration>


这样就算配置好了。可以在hadoop目录下使用 ./bin/hadoop namenode -format 命令格式化文件系统了。之后使用 ./bin/start-all.sh 启动HDFS文件系统。访问 http://localhost:50070 如果看到了网页,那么HDFS就算安装完成了。

2. HBase配置
一样的,下载tar包,拷贝至/usr/local/目录,更改文件所有者。

配置 hbase-env.sh, 将 
export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_21

这一句添加上去。路径根据个人情况设置。

配置 hbase-site.xml, 这里将 hbase.rootdir 存放在 HDFS 上,这里端口号一定要和之前设置的 HDFS的 fs.default.name的端口号一致。

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://127.0.0.1:9000/hbase</value>
</property>
</configuration>


HBase这样就配置好了。

3. 注意点

由于这样的配置,HBase是依赖与HDFS的文件系统的。所以应当先启动HDFS,之后启动HBase。之前出现过几次情况,在未启动HDFS的情况下,先启动了HBase,结果HBase可以正常启动,却无法正常退出,并且所有HBase Shell指令都会报错(由于访问不到HDFS上的HBase文件)。
不知道在不使用 ./bin/stop-all.sh 和 ./bin/stop-hbase.sh 的情况下,直接关闭系统,重启电脑,是否会对文件系统造成破坏。

所以,切记,一定要先启动Hadoop,并且可以通过 http://localhost:50070/dfshealth.jsp 查看HDFS并且可以浏览文件之后再启动HBase。否则 HBase也会出现一切问题,如启动时间过长,Master一直在初始化等等。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: