HBase 安裝步驟
1.配置 hbase 的環境變量
在/root/hbase/conf 目錄下的 hbase-env.sh 中添加 Hbase 需要的環境變量。如下: 下面第四行注意這個值爲 false 時,表示啓動的是獨立的 zookeeper。而配置成 true 則是 hbase
自帶的 zookeeper。
export JAVA_HOME=/usr/java/jdk1.6.0_14export HBASE_HOME=/root/hbase
export PATH=$PATH:/root/hbase/bin export HBASE_MANAGES_ZK=falseexport HADOOP_HOME=/root/hadoop
2.集羣時鐘同步
集羣的時鐘要保證基本的一致。稍有不一致是可以容忍的。 時鐘同步見附錄 。
3.修改 ulimit 和 nproc
HBase 是數據庫,會在同一時間使用很多的文件句柄。大多數 linux 系統使用的默認值 1024 是不能滿足的,會導致 FAQ: Why do I see "java.io.IOException...(Toomany openfiles)" in my logs?異常。還可能會發生這樣的異常
2010-04-06 03:04:37,542 INFO org.apache.hadoop.hdfs.DFSClient: Exception increateBlockOutputStream java.io.EOFException
2010-04-06 03:04:37,542 INFO org.apache.hadoop.hdfs.DFSClient: Abandoning block blk_-6935524980745310745_1391901
所以你需要修改你的最大文件句柄限制。可以設置到 10k。
你還需要修改 hbase 用戶的 nproc,在壓力下,如果過低會造成 OutOfMemoryError 異常。需要說明的是,這兩個設置是針對操作系統的,不是 HBase 本身的。
在 RHEL6 修改 ulimit 和 nproc:
# vim /etc/security/limits.conf //針對某個用戶測試(這裏使用 root)
# grep '^root' /etc/security/limits.conf
root |
soft |
nofile |
10240 |
root |
hard |
nofile |
10240 |
root |
soft |
nproc |
10240 |
root |
hard |
nproc |
10240 |
#
退出當前用戶,重新登錄即可讓之前修改的 limits 生效,執行如下命令發現修改成功
# ulimit -u
10240
# ulimit -n
10240
4.配置 hbase-site.xml
先 在 hbase-site.xml, 加 一 個 屬 性 hbase.cluster.distributed 設 置 爲 true 然 後 把hbase.rootdir 設 置 爲 HDFS 的 NameNode 的 位 置 。 例 如 , 你 的 namenode 運 行 在namenode.example.org,端口是 9000 你期望的目錄是 /hbase,使用如下的配置
<configuration>
...
<property>
<name>hbase.rootdir</name>
<value>hdfs://namenode.example.org:9000/hbase</value>
<description>The directory sharedby RegionServers.
</description>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
<description>The mode the cluster willbe in. Possible values are
false: standalone andpseudo-distributedsetups with managed Zookeepertrue: fully-distributed withunmanaged ZookeeperQuorum (see hbase-env.sh)
</description>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>hadoop2,hadoop3,hadoop4</value>
</property>
<property>
<name>hbase.zookeeper.sission.timeout</name>
<value>60000</value>
</property>
<property>
<name>hbase.zookeeper.property.clientPort</name>
<value>2222</value>
</property>
<property>
<name>hbase.master</name>
<value>hadoop1</value>
</property>
<property>
<name>hbase.regionserver.lease.period</name>
<value>60000</value>
</property>
<property>
<name>hbase.rpc.timeout</name>
<value>60000</value>
</property>
...
</configuration>
5.配置 regionservers
完全分佈式模式的還需要修改 conf/regionservers.列出了你希望運行的全部HRegionServer,一行寫一個 host (就像 Hadoop 裏面的 slaves 一樣). 列在這 裏的server 會隨着集羣的啓動而啓動,集羣的停止而停止.
6.啓動和停止
bin/start-hbase.sh
HBase 也有一個界面,上面會列出重要的屬性。默認是在 Master 的 60010 端口 上(HBase RegionServers 會默認綁定 60020 端口,在端口 60030 上有一個展示 信息的界面 ).如果 Master 運行在 master.example.org,端口是默認的話,你 可以用瀏覽器在http://master.example.org:60010看到主界面. .
停止 HBase
bin/stop-hbase.sh
stopping hbase...............
停止操作需要一些時間,你的集羣越大,停的時間可能會越長。如果你正在運行一個分佈式的操作,要確認在HBase 徹底停止之前,Hadoop 不能停.
################################
NTP 服務器的安裝和配置
1 檢查需要的包
[root@rhel.philip.com~]rpm-qa |grep ntp ntp-4.2.4p8-2.el6.i686
ntpdate-4.2.4p8-2.el6.i686
2 配置文件/etc/ntp.conf
3 啓動服務
/etc/init.d/ntpd start #//等大約 5 分鐘完成本機時間同步以後,方可作爲時 間服務器使用
3 在客戶機進行時間同步
shell> ntpdate 192.168.4.1
shell> hwclock --systohc //以當前系統時間設置硬件時間
shell> crontab -e
30 7 * * * /usr/sbin/ntpdate 192.168.4.1 && hwclock --systohc shell> /etc/init.d/crond start
################################
rhel 中修改 ulimit 和 nproc
修改 limits.conf 配置文件生效
# ulimit -a//查看當前配置文件 ulimit 全局係數
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimitedscheduling priority (-e) 0
file size (blocks,-f) unlimited pending signals (-i) 1829
max lockedmemory (kbytes,-l)64
max memory size (kbytes, -m) unlimitedopen files (-n) 1024
pipe size (512 bytes,-p)8
POSIX message queues (bytes, -q)819200 real-time priority (-r) 0
stack size (kbytes, -s)10240
cpu time (seconds,-t) unlimitedmax user processes(-u)1024
virtual memory (kbytes,-v)unlimited file locks (-x) unlimited
# vim /etc/security/limits.conf
# grep'^*' /etc/security/limits.conf
* soft nproc 10240
* hardnproc 10240
* soft nofile 10240
* hardnofile 10240
#
退出當前用戶,重新登錄即可讓之前修改的 limits 生效
# ulimit -n
10240
# ulimit -u//發現 nproc 並沒有像 nofile 一樣而改變
1024
#
獲知,RHEL6 下引入了配置文件/etc/security/limits.d/90-nproc.conf
# cat /etc/security/limits.d/90-nproc.conf
# Default limit for number of user'sprocesses toprevent
* soft nproc 1024
#
我們修改這個文件嘗試是否因爲該文件影響,修改如下
# vim /etc/security/limits.d/90-nproc.conf
# cat /etc/security/limits.d/90-nproc.conf
# Default limit for number of user'sprocesses toprevent
# accidentalfork bombs.
# See rhbz #432903for reasoning.
#* soft nproc 1024
* soft nproc 65535
#
退出當前用戶,重新登錄即可讓之前修改的 limits 生效,執行如下命令發現修改成功
# ulimit -u
10240
# ulimit -n
10240
#
由 此 可 知 , 如 果 要 修 改 配 置 文 件 limits.conf 中 的 nproc 限 制 上 限 是 受 文 件
/etc/security/limits.d/90-nproc.conf 中 nproc 值大小制約的,但是 shell 終端下是不受制約的
另外猜想,如果使用*號讓全局用戶生效是受文件/etc/security/limits.d/90-nproc.conf 中 nproc
值大小制約的,而如果僅僅是針對某個用戶,那麼就不受該文件 nproc 值大小的影響
# Default limit for number of user'sprocesses toprevent
# accidentalfork bombs.
# See rhbz #432903for reasoning.
* soft nproc 1024
#* soft nproc 65535
# vim /etc/security/limits.conf //只針對某個用戶測試(這裏使用 root)
# grep'^root' /etc/security/limits.conf
root soft nproc 10240 root hard nproc 10240
#
退出當前用戶,重新登錄即可讓之前修改的 limits 生效,執行如下命令發現修改成功
# ulimit -u
10240
# ulimit -n
10240
#
之前猜想正確,即只有當使用*號讓全局用戶生效的時候,生效的 nproc 的值大小是受文件
/etc/security/limits.d/90-nproc.conf 中 nproc 值大小制約的,而如果僅僅是針對某個用戶,那麼就不受該文件 nproc 值大小的影響。