hbase学习记录
参考http://abloz.com/hbase/book.html#d613e75
Step 1:修改conf/hbase-site.xml
(单机版)
<property>
<name>hbase.rootdir</name>
<value>/usr/local/product/hbase-0.90.5/hbasedata</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/usr/local/product/hbase-0.90.5/zookeeperdata</value>
</property>
(集群版)
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://Qmadou-test1:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.master</name>
<value>192.168.3.190:60000</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>192.168.3.191,192.168.3.192,192.168.3.193</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
</configuration>
Hbase Caused by: java.net.BindException: Cannot assign requested address
解决【
获得本机ip
获取hostname
ifconfig
写入hosts文件
sudo vi /etc/hosts
192.168.1.100 hostname】
192.168.3.20-23 测试机
root/rootroot
192.168.3.190-193 root/datou@603
Step 2: 修改hosts文件
vi /etc/hosts:
192.168.3.190 Qmadou-test1
192.168.3.191 Qmadou-test2
192.168.3.192 Qmadou-test3
192.168.3.193 Qmadou-test4
Step 3 设置环境变量
export JAVA_HOME=/usr/lib/jvm/jre-1.6.0-openjdk
export HADOOP_HOME=/usr/local/product/hadoop-1.0.4
step 4 安装hdfs
cp /usr/local/product/hadoop-1.0.4/src/hdfs/hdfs-default.xml hdfs-site.xml
dfs.name.dir /data/dfs/name
dfs.data.dir /data/dfs/data
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>Qmadou-test1:9001</value>
</property>
</configuration>
scp -r /usr/local/product/hadoop-1.0.4 Qmadou-test2:/usr/local/product/hadoop-1.0.4
step 5 建立ssh互信
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
scp -P22 authorized_keys Qmadou-test2:~/.ssh/
scp -P22 authorized_keys Qmadou-test3:~/.ssh/
scp -P22 authorized_keys Qmadou-test4:~/.ssh/
ssh -v -p 22 Qmadou-test4
http://192.168.3.190:60010看到主界面
http://192.168.3.190:50070/dfshealth.jsp
http://www.cnblogs.com/ventlam/archive/2011/01/22/HBaseCluster.html
hbase.regionserver.handler.count 30
hfile.block.cache.size 0.5
<property>
<name>hbase.regionserver.handler.count</name>
<value>30</value>
</property>
<property>
<name>hfile.block.cache.size</name>
<value>0.5</value>
</property>
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://Qmadou-test1:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.master</name>
<value>192.168.3.190:60000</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>192.168.3.191,192.168.3.192,192.168.3.193</value>
</property>
</configuration>
cp $HADOOP_HOME/hadoop-core-1.0.4.jar .
conf/hdfs-site.xml里面的xceivers参数,至少要有4096:
<property>
<name>dfs.datanode.max.xcievers</name>
<value>4096</value>
</property>
conf/hbase-env.sh
运行ntp
service ntpd start/stop/restart
chkconfig ntpd on
查看ntp的端口,应该看到123端口
netstat -unlnp
查看ntp服务器有无和上层连通
[root@S5 ~]# ntpstat
复制两个jar包,hadoop-core.jar和
cp /usr/local/product/hadoop-1.0.4/lib/commons-configuration-1.6.jar /usr/local/product/hbase-0.90.5/lib
<property>
<name>zookeeper.session.timeout</name>
<value>180000</value>
</property>
<property>
<name>hbase.regionserver.restart.on.zk.expire</name>
<value>true</value>
</property>
http://leongfans.iteye.com/blog/1071584
执行
./hbase org.jruby.Main add_table.rb /hbase/TableName
bin/hbase org.jruby.Main add_table.rb /hbase/uid_word_t5
重启HBase以后,发现加载的Region数量已经和实际的Region数量一致了
hbase运行一段时间后hregionserver异常 退出的情形:
报错日志为:
org.apache.hadoop.hdfs.server.namenode.LeaseExpiredException: No lease on
hadoop datanode报错日志为:
java.io.IOException: xceiverCount 4097 exceeds the limit of concurrent xcievers 4096
解决办法为:
解决办法,调整xcievers参数
默认是4096,改为8192
vi /home/dwhftp/opt/hadoop/conf/hdfs-site.xml
<property>
<name>dfs.datanode.max.xcievers</name>
<value>8192</value>
</property>
参考:
http://bkeep.blog.163.com/blog/static/123414290201272644422987/
hbase数据迁移导致报名显示不出来:
生产上,将hdfs文件系统迁移到另外一个机房的机器上,执行hdfs数据恢复后,发现hbase表没有加载上,是由于环境变了,hbase在hdfs上仍然保存这原来regionserver的信息,修复办法:
进入hbase管理页面,执行compact按钮
http://192.168.8.105:60010/table.jsp?name=-ROOT-
hbase master自动退出问题:
问题描述
在使用HFileOutputFormat.configureIncrementalLoad()时,MapReduce的job跑的时间在20分钟左右,经常发现Master自动退出,日志的部分信息后面贴上。日志显示的主要问题是zookeeper(简称ZK)会话过期,然后接着一堆的KeeperException异常。最终Master自己退出,regionserver和ZK还继续运行。
解决尝试过程
给hbase的邮件组发了邮件,描述了问题,很快得到了Stack的回答,Stack也确认了这个是ZK超时引起的Master故障。主要是两个方面可能引起超时,一是ZK节点上有MapReduce任务在跑,几乎占据了所有的IO(磁盘IO和网络IO);二是Java GC运行占据了大多数资源。
的确,我的集群的ZK节点上同时是TaskTracker和DataNode,跑Job时会占据大量IO,但是GC的占据不大。试着将ZK节点和TaskTracker节点分开,然后将zookeeper.session.timeout时间设置更大一些,不过原先我的设置就比较大了,已经是300000毫秒了,现在设置为600000毫秒。
设置后继续尝试批量导入,跑了10几个批量导入的job没发现报告超时异常。也算用一种不优雅的方式暂时解决了这个问题。(参考:http://xygan.iteye.com/blog/1111542)