HBase 在Ubuntu12.04下的安装 以及遇到问题解决
2014-11-14 13:51
288 查看
HBase安装
hadoop集群:
hadoop1.1.2
master192.168.1.161
slave01192.168.1.163
slave02192.168.1.164
slave03192.168.1.165
slave04192.168.1.166
hbase版本:hbase0.94
1、修改hadoophdfs-site.xml
dfs.datanode.max.xcievershbase操作时并发量很大,需要修改并发量,默认是1024
dfs.support.append可以追加数据,添加保存时需要用到。
<property>
<name>dfs.support.append</name>
<value>true</value>
</property>
<property>
<name>dfs.datanode.max.xcievers</name>
<value>4096</value>
</property>
2、启动hadoop,查看进程hadoop进程
3、解压hbase0.94,我解压在与hadoop同一级目录
4、配置hbase/conf/hbase-env.sh
exportJ***A_HOME=/usr/jdk1.7.25
exportHBASE_MANAGES_ZK=true#hbase要用zookeeper来进行管理
5、配置hbase/confhbase-site.xml
hbase.rootdir设置hbase在hdfs上的目录,和hadoop连接。主机名为hdfs的节点所在的主机
hbase.cluster.distributed分布式,表明是完全分布式hbase集群
hbase.master设置hbase的主机和端口
hbase.tmp.dirhbase的临时文件目录
hbase.zookeeper.quorumzookeeper的主机,建议使用单数
hbase.zookeeper.property.clientPort
设置zookeeper的端口,默认是2181
hbase.zookeeper.property.dataDir设置zookeeper的存储目录
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://nistest.master:9000/hbase</value>
<description>Thedirectorysharedbyregionservers.</description>
</property>
<property>
<name>hbase.master</name>
<value>nistest.master</value>
</property>
<property>
<name>hbase.master.port</name>
<value>60000</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.tmp.dir</name>
<value>/usr/local/hadoop/hbase/tmp</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/usr/local/hadoop/zookeeper/data</value>
</property>
<property>
<name>hbase.zookeeper.property.clientPort</name>
<value>2181</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>nistest.node1,nistest.node2,nistest.node3,nistest.node4</value>
</property></configuration>
6、配置regionservers,将regionserver添加到这个文件
Nistest.node1,nistest.node2,nistest.node3,nistest.node4
7、拷贝hadoop-core-1.2.1.jar到hbase/lib目录下,覆盖旧的版本。
替换Hbase中的jar包
需要用{HADOOP_HOME}下的hadoop-1.2.1-core.jar
替换掉{HBASE_HOME}/lib目录下的hadoop-core-0.20-append-r1056497.jar
。如果不替换jar文件Hbase启动时会因为hadoop和Hbase的客户端协议不一致而导致HMaster启动异常。报错如下:
localhost:Exceptioninthread"main"org.apache.hadoop.ipc.RPC$VersionMismatch:Protocolorg.apache.hadoop.hdfs.protocol.ClientProtocolversionmismatch.(client=42,server=41)
所以如果遇到以上错误,就通过替换jar包解决。
并把~/hadoop/conf/hdfs-site.xml拷贝至~/hbase/conf/目录下。
8、将hbase复制到各个节点
scp-rhbasehadoop@nistest.node1:/usr/local/hadoop
9、启动hbase
bin/start-hbase.sh
10、查看进程
查看各节点上进程:
jps
11、hbaseweb界面http://master:60010
如果此时不能访问那有可能是hadoop没有离开安全模式的原因,此时
当在hbaseshell下创建表时,出现MasterNotRunningException异常,list、get等不能正常执行,通过JavaAPI同样不能创建表,究其原因在于分布式文件系统处于安全模式状态下,执行hadoopdfsadmin-safemodeleave,重新启动hbase,问题即可解决。
Hadoop分布式文件系统为什么不自动退出安全模式呢?就让我们来看一下Hadoop安全模式吧。
namenode在启动的时候首先进入安全模式,如果datanode丢失的block达到一定的比例(datanode通过心跳包上报的block块数达到元数据记录的block块数的0.9990,系统会自动退出安全模式),则系统会一直处于安全模式状态即只读状态。默认情况下dfs.safemode.threshold.pct的值为0.999f。关于安全模式的命令:
hadoopdfsadmin-safemodeget(获取安全模式是否开启)
hadoopdfsadmin-safemodeleave(强制退出)
hadoopdfsadmin-safemodeenter(进入)
hadoopdfsadmin-safemodewait(一直等待直到退出安全模式)
11、hbase操作:
bin/habseshell
list
create'user','f1','2','f3'
输入help然后<RETURN>可以看到一列shell命令。这里的帮助很详细,要注意的是表名,行和列需要加引号。
创建一个名为
为
以上我们分别插入了3行。第一个行key为
列为
columnfamily前缀和列的名字组成的,以冒号间隔。例如这一行的列名就是
检查插入情况.
Scan这个表,操作如下
Get一行,操作如下
disable再drop
这张表,可以清除你刚刚的操作
关闭shell
#bin/hbaseshell
HBaseShell;enter'help<RETURN>'forlistofsupportedcommands.
Version:0.20.6,rUnknown,ThuOct2819:02:04CST2010
接着创建表时候出现如下情况:hbase(main):001:0>create'test',''c
NativeException:org.apache.hadoop.hbase.MasterNotRunningException:null
jps下,发现主节点上HMaster没有启动,查理HBaselog(logs/hbase-hadoop-master-ubuntu.log)里有下面异常:
FATALorg.apache.hadoop.hbase.master.HMaster:Unhandledexception.Startingshutdown.
java.io.IOException:Calltonode1/10.64.56.76:49002failedonlocalexception:java.io.EOFException
解决:
从hadoop_home/下面cp一个hadoop/hadoop-core-0.20.203.0.jar到hbase_home/lib下。
因为Hbase建立在Hadoop之上,所以他用到了hadoop.jar,这个Jar在
lib里面。这个jar是hbase自己打了branch-0.20-append补丁的hadoop.jar.Hadoop使用的hadoop.jar和Hbase使用的必须一致。所以你需要将
Hbaselib目录下的hadoop.jar替换成Hadoop里面的那个,防止版本冲突。比方说CDH的版本没有HDFS-724而branch-0.20-append里面有,这个HDFS-724补丁修改了RPC协议。如果不替换,就会有版本冲突,继而造成严重的出错,Hadoop会看起来挂了。
再用./start-hbase.sh启动HBase后,jps下,发现主节点上HMaster还是没有启动,在HBaselog里有下面异常:
FATALorg.apache.hadoop.hbase.master.HMaster:Unhandledexception.Startingshutdown.
java.lang.NoClassDefFoundError:org/apache/commons/configuration/Configuration
解决:
在NoClassDefFoundError,缺少org/apache/commons/configuration/Configuration
果断给他加一个commons-configuration包,
从hadoop_home/lib下面cp一个hadoop/lib/commons-configuration-1.6.jar到hbase_home/lib下。
(集群上所有机子的hbase配置都需要一样)
2)、去掉hadoop的安全模式:hadoopdfsadmin-safemodeleave
3)、把/etc/hosts里的ubuntu的IP改为服务器当前的IP
4)、确认hbase的hbase-site.xml中
<name>hbase.rootdir</name>
<value>hdfs://node:49002/hbase</value>
与hadoop的core-site.xml中
<name>fs.default.name</name>
<value>hdfs://node:49002/hbase</value>
红字部分保持一致
<value>hdfs://localhost:8020/hbase</value>
6)、重新执行./start-hbase.sh之前,先kill掉当前的hbase和zookeeper进程
PS:遇到问题时,先查看logs,很有帮助。
HBase官方文档,全面介绍hbase安装配置:
http://www.yankay.com/wp-content/hbase/book.html#hbase_default_configurations
hadoop集群:
hadoop1.1.2
master192.168.1.161
slave01192.168.1.163
slave02192.168.1.164
slave03192.168.1.165
slave04192.168.1.166
hbase版本:hbase0.94
1、修改hadoophdfs-site.xml
dfs.datanode.max.xcievershbase操作时并发量很大,需要修改并发量,默认是1024
dfs.support.append可以追加数据,添加保存时需要用到。
<property>
<name>dfs.support.append</name>
<value>true</value>
</property>
<property>
<name>dfs.datanode.max.xcievers</name>
<value>4096</value>
</property>
2、启动hadoop,查看进程hadoop进程
3、解压hbase0.94,我解压在与hadoop同一级目录
4、配置hbase/conf/hbase-env.sh
exportJ***A_HOME=/usr/jdk1.7.25
exportHBASE_MANAGES_ZK=true#hbase要用zookeeper来进行管理
5、配置hbase/confhbase-site.xml
hbase.rootdir设置hbase在hdfs上的目录,和hadoop连接。主机名为hdfs的节点所在的主机
hbase.cluster.distributed分布式,表明是完全分布式hbase集群
hbase.master设置hbase的主机和端口
hbase.tmp.dirhbase的临时文件目录
hbase.zookeeper.quorumzookeeper的主机,建议使用单数
hbase.zookeeper.property.clientPort
设置zookeeper的端口,默认是2181
hbase.zookeeper.property.dataDir设置zookeeper的存储目录
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://nistest.master:9000/hbase</value>
<description>Thedirectorysharedbyregionservers.</description>
</property>
<property>
<name>hbase.master</name>
<value>nistest.master</value>
</property>
<property>
<name>hbase.master.port</name>
<value>60000</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.tmp.dir</name>
<value>/usr/local/hadoop/hbase/tmp</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/usr/local/hadoop/zookeeper/data</value>
</property>
<property>
<name>hbase.zookeeper.property.clientPort</name>
<value>2181</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>nistest.node1,nistest.node2,nistest.node3,nistest.node4</value>
</property></configuration>
6、配置regionservers,将regionserver添加到这个文件
Nistest.node1,nistest.node2,nistest.node3,nistest.node4
7、拷贝hadoop-core-1.2.1.jar到hbase/lib目录下,覆盖旧的版本。
替换Hbase中的jar包
需要用{HADOOP_HOME}下的hadoop-1.2.1-core.jar
替换掉{HBASE_HOME}/lib目录下的hadoop-core-0.20-append-r1056497.jar
。如果不替换jar文件Hbase启动时会因为hadoop和Hbase的客户端协议不一致而导致HMaster启动异常。报错如下:
localhost:Exceptioninthread"main"org.apache.hadoop.ipc.RPC$VersionMismatch:Protocolorg.apache.hadoop.hdfs.protocol.ClientProtocolversionmismatch.(client=42,server=41)
所以如果遇到以上错误,就通过替换jar包解决。
并把~/hadoop/conf/hdfs-site.xml拷贝至~/hbase/conf/目录下。
8、将hbase复制到各个节点
scp-rhbasehadoop@nistest.node1:/usr/local/hadoop
9、启动hbase
bin/start-hbase.sh
10、查看进程
查看各节点上进程:
jps
11、hbaseweb界面
如果此时不能访问那有可能是hadoop没有离开安全模式的原因,此时
当在hbaseshell下创建表时,出现MasterNotRunningException异常,list、get等不能正常执行,通过JavaAPI同样不能创建表,究其原因在于分布式文件系统处于安全模式状态下,执行hadoopdfsadmin-safemodeleave,重新启动hbase,问题即可解决。
Hadoop分布式文件系统为什么不自动退出安全模式呢?就让我们来看一下Hadoop安全模式吧。
namenode在启动的时候首先进入安全模式,如果datanode丢失的block达到一定的比例(datanode通过心跳包上报的block块数达到元数据记录的block块数的0.9990,系统会自动退出安全模式),则系统会一直处于安全模式状态即只读状态。默认情况下dfs.safemode.threshold.pct的值为0.999f。关于安全模式的命令:
hadoopdfsadmin-safemodeget(获取安全模式是否开启)
hadoopdfsadmin-safemodeleave(强制退出)
hadoopdfsadmin-safemodeenter(进入)
hadoopdfsadmin-safemodewait(一直等待直到退出安全模式)
11、hbase操作:
bin/habseshell
list
create'user','f1','2','f3'
HbaseShell练习
用shell连接你的Hbase$./bin/hbaseshell
HBaseShell;enter'help<RETURN>'forlistofsupportedcommands.
Type"exit<RETURN>"toleavetheHBaseShell
Version:0.90.0,r1001068,FriSep2413:55:42PDT2010
hbase(main):001:0>
输入help然后<RETURN>可以看到一列shell命令。这里的帮助很详细,要注意的是表名,行和列需要加引号。
创建一个名为
test的表,这个表只有一个columnfamily
为
cf。可以列出所有的表来检查创建情况,然后插入些值。
hbase(main):003:0>create'test','cf'
0row(s)in1.2200seconds
hbase(main):003:0>list'table'
test
1row(s)in0.0550seconds
hbase(main):004:0>put'test','row1','cf:a','value1'
0row(s)in0.0560seconds
hbase(main):005:0>put'test','row2','cf:b','value2'
0row(s)in0.0370seconds
hbase(main):006:0>put'test','row3','cf:c','value3'
0row(s)in0.0450seconds
以上我们分别插入了3行。第一个行key为
row1,
列为
cf:a,值是
value1。Hbase中的列是由
columnfamily前缀和列的名字组成的,以冒号间隔。例如这一行的列名就是
a.
检查插入情况.
Scan这个表,操作如下
hbase(main):007:0>scan'test'
ROWCOLUMN+CELL
row1column=cf:a,timestamp=1288380727188,value=value1
row2column=cf:b,timestamp=1288380738440,value=value2
row3column=cf:c,timestamp=1288380747365,value=value3
3row(s)in0.0590seconds
Get一行,操作如下
hbase(main):008:0>get'test','row1'
COLUMNCELL
cf:atimestamp=1288380727188,value=value1
1row(s)in0.0400seconds
disable再drop
这张表,可以清除你刚刚的操作
hbase(main):012:0>disable'test'
0row(s)in1.0930seconds
hbase(main):013:0>drop'test'
0row(s)in0.0770seconds
关闭shell
hbase(main):014:0>exit
在安装中出现的问题:
1)
用./start-hbase.sh启动HBase后,执行hbaseshell#bin/hbaseshell
HBaseShell;enter'help<RETURN>'forlistofsupportedcommands.
Version:0.20.6,rUnknown,ThuOct2819:02:04CST2010
接着创建表时候出现如下情况:hbase(main):001:0>create'test',''c
NativeException:org.apache.hadoop.hbase.MasterNotRunningException:null
jps下,发现主节点上HMaster没有启动,查理HBaselog(logs/hbase-hadoop-master-ubuntu.log)里有下面异常:
FATALorg.apache.hadoop.hbase.master.HMaster:Unhandledexception.Startingshutdown.
java.io.IOException:Calltonode1/10.64.56.76:49002failedonlocalexception:java.io.EOFException
解决:
从hadoop_home/下面cp一个hadoop/hadoop-core-0.20.203.0.jar到hbase_home/lib下。
因为Hbase建立在Hadoop之上,所以他用到了hadoop.jar,这个Jar在
lib里面。这个jar是hbase自己打了branch-0.20-append补丁的hadoop.jar.Hadoop使用的hadoop.jar和Hbase使用的必须一致。所以你需要将
Hbaselib目录下的hadoop.jar替换成Hadoop里面的那个,防止版本冲突。比方说CDH的版本没有HDFS-724而branch-0.20-append里面有,这个HDFS-724补丁修改了RPC协议。如果不替换,就会有版本冲突,继而造成严重的出错,Hadoop会看起来挂了。
再用./start-hbase.sh启动HBase后,jps下,发现主节点上HMaster还是没有启动,在HBaselog里有下面异常:
FATALorg.apache.hadoop.hbase.master.HMaster:Unhandledexception.Startingshutdown.
java.lang.NoClassDefFoundError:org/apache/commons/configuration/Configuration
解决:
在NoClassDefFoundError,缺少org/apache/commons/configuration/Configuration
果断给他加一个commons-configuration包,
从hadoop_home/lib下面cp一个hadoop/lib/commons-configuration-1.6.jar到hbase_home/lib下。
(集群上所有机子的hbase配置都需要一样)
2注意事项:
1)、先启动hadoop后,再开启hbase2)、去掉hadoop的安全模式:hadoopdfsadmin-safemodeleave
3)、把/etc/hosts里的ubuntu的IP改为服务器当前的IP
4)、确认hbase的hbase-site.xml中
<name>hbase.rootdir</name>
<value>hdfs://node:49002/hbase</value>
与hadoop的core-site.xml中
<name>fs.default.name</name>
<value>hdfs://node:49002/hbase</value>
红字部分保持一致
<value>hdfs://localhost:8020/hbase</value>
6)、重新执行./start-hbase.sh之前,先kill掉当前的hbase和zookeeper进程
PS:遇到问题时,先查看logs,很有帮助。
HBase官方文档,全面介绍hbase安装配置:
相关文章推荐
- ubuntu12.04安装vmware workstation8.0.2遇到的问题以及解决办法
- Fedora 9安装VMware tools 6.0.2遇到的问题以及解决办法
- 安装sapi 5.3及sample以及编译时遇到的问题的解决方法
- linux下R安装会遇到问题以及解决方法
- 安装64bit Ubuntu12.04/12.10 遇到的问题以及解决办法
- pligg9.7beta的后HTML编辑器插件的安装(tinymce_2_1_1_1)(以及使用中遇到的点滴问题解决办法)
- CM安装好集群之后在shell命令下执行hive 或者hbase操作遇到权限问题的解决方法
- 我在安装TFS 2008的时候遇到的问题以及解决方法一点击任务的时候报错
- ubuntu12.04 安装python3.3.5以及方向键出问题解决方法
- RHEL4 安装mysql5 遇到的问题 以及菜鸟级解决办法
- Kohana 安装流程以及所遇到问题的解决方法
- 我在安装TFS 2008的时候遇到的问题以及解决方法一sharepoint 安装 打开站点 出现服务器不可用问题
- Windows XP系统如何安装IIS5.1测试服务器 如何配置IIS以及安装中遇到的问题和解决办法
- 初次安装cocos2dx所遇到的问题以及解决办法
- 安装mediawiki中文版时遇到的问题以及解决办法
- Linux挂载优盘 Linux中安装jdk,eclipse,tomcat以及遇到的问题和解决办法
- 安装calabash-android遇到的问题以及解决
- 我在安装TFS 2008的时候遇到的问题以及解决方法一sharepoint 安装 命令建立应用程序和站点集
- 安装php的tokyo_tyrant扩展时遇到的问题,以及解决方法
- 我在安装TFS 2008的时候遇到的问题以及解决方法一sharepoint安装 环境变量