三、HBASe单机配置
1) 下载
在Apache/Hadoop项目的网站(hadoop.apache.org/)下载hadoophbase发行包,此处两个发行包的大版本号一定要一致,譬如都是0.18版本:hadoop-0.18.2.tar.gzhbase-0.18.1.tar.gz
2) 使用root身份登录目标服务器系统(Suse10Linux)
首先安装java虚拟机,这个比较简单,随便找个绿色的解压就可以了,在这个例子里面我使用IBMWAS6.1附带的jdk,它的home目录是/opt/IBM/WebSphere/AppServer/java,我们只需要配置系统的环境变量就可以了.
编辑全局环境变量文件/etc/profile,在文件后面添加
exportJAVA_HOME=/opt/IBM/WebSphere/AppServer/java
exportPATH=$JAVA_HOME:$PATH
保存profile文件后使用$source/etc/profile命令重新加载profile,然后随便在一个目录下面运行$java-version查看javahome环境变量和path变量是否被正确加载.
另外到/etc/hosts文件中查看主机映射是否存在,例如127.0.0.1localhost或者什么其他的名字,在这里默认配置本机为localhost,如果需要做分布式的话,本机要做namenode,所以要把所有的datanode的host添加到这里面.
3) 创建hadoop用户,$useraddhadoop可以用$passwdhadoop修改hadoop用户的登录密码.
创建hadoop用户的home目录,如果打算在别处安装hadoop/hbase的话可以不这样做,这里我们默认将hadoophbase安装在/home/${username}目录下.
$cd/home
$mkdirhadoop
将目录用户指派给hadoop
$chownhadoophadoop
改变目录权限,这里我们配大一些,其实只要644就足够了:
$chmod755hadoop
使用hadoop用户登录系统,将下载的两个发行包文件传到/home/hadoop目录下面,然后给它们加上执行权限:
$chmoda+xhadoop-0.18.2.tar.gz
$chmoda+xhbase-0.18.1.tar.gz
4) 解压hadoop:
$tarzxvfhadoop-0.18.2.tar.gz
这样做会在/home/hadoop目录下解压hadoop发行包并创建到/home/hadoop/hadoop。
5) 配置hbase-site.xml文件
6) 启动和关闭
/bin/start-hbase.sh
/bin/stop-hbase.sh
7) 说明
必须配置的参数:
Hbase.zookeeper.quorum 本机的IP地址,不能为localhost或127.0.0.1,否则不能远程链接。
Hbase.master.dns.interface 为master绑定的网卡,多网卡的服务器必须配置,否则默认绑定到虚拟的轮回网卡,不配置不能远程链接。
ZooKeeper服务不认Ip,只认主机名,因此需要在/etc/hosts文件里增加一个ZooKeeper服务的IP地址与本机主机名的配置。如:10.5.31.10 amber-mts
如果不配置,Zookerper会绑定到locahost的主机名,远程就不能链接。
远程调用客户端也需要配置本机的DNS,在c:\windows\system32\driver\etc\host文件里增加Zookerper的Ip与主机名的配置。
四、Hbase配置解释
1) 修改linux 系统参数
Linux系统最大可打开文件数一般默认的参数值是1024,如果你不进行修改并发量上来的时候会出现“Too Many Open Files”的错误,导致整个HBase不可运行,你可以用ulimit -n 命令进行修改,或者修改/etc/security/limits.conf和/proc/sys/fs/file-max 的参数,具体如何修改可以去Google 关键字“linux limits.conf ”
2) JVM 配置
修改 hbase-env.sh 文件中的配置参数,根据你的机器硬件和当前操作系统的JVM(32/64位)配置适当的参数
HBASE_HEAPSIZE 4000 HBase使用的 JVM 堆的大小
HBASE_OPTS "?server?XX:+UseConcMarkSweepGC"JVMGC 选项
HBASE_MANAGES_ZKfalse 是否使用Zookeeper进行分布式管理
HBase持久化
重启操作系统后HBase中数据全无,你可以不做任何修改的情况下,创建一张表,写一条数据进行,然后将机器重启,重启后你再进入HBase的shell中使用 list 命令查看当前所存在的表,一个都没有了。是不是很杯具?没有关系你可以在hbase/conf/hbase-default.xml中设置hbase.rootdir的值,来设置文件的保存位置指定一个文件夹,例如:
同样你也可以指定你的分布式文件系统HDFS的路径例如:hdfs://NAMENODE_SERVER:PORT/HBASE_ROOTDIR,这样就写到了你的分布式文件系统上了。
3) 配置HBase运行参数
hbase.rootdir
这个目录是region server的共享目录,用来持久化Hbase。URL需要是'完全正确'的,还要包含文件系统的scheme。例如,要表示hdfs中的'/hbase'目录,namenode 运行在namenode.example.org的9090端口。则需要设置为hdfs://namenode.example.org:9000 /hbase。默认情况下Hbase是写到/tmp的。不改这个配置,数据会在重启的时候丢失。
默认:file:///tmp/hbase-${user.name}/hbase
hbase.master.port
Hbase的Master的端口.
默认: 60000
hbase.cluster.distributed
Hb