1、硬件条件
(1)、CPU:
Master Host 双四核,2.0GHz-2.5GHz
Slave Host 双四核,2.0GHz-2.5GHz
------------------------------------------
NameNode 8GB
SecondaryNameNode 8GB
DataNode 1GB
-------------------------------------------
HMaster 4GB
HRegionServer 12GB
ZooKeeper 1GB
-------------------------------------------
JobTracker 2GB
TaskTracker 1GB
Task Attempt 1GB
--------------------------------------------
Master Host 24GB
Slave Host 24GB
--------------------------------------------
HRegionServer : 12G
NameNode、SecondaryNameNode : 8G
HMaster: 4G
DataNode、 ZooKeeper : 1G
可这样设计:
1台 NameNode (8G) + ZooKeeper (1G)
1台 SecondaryNameNode (8G) + ZooKeeper (1G)
1台 HMaster (4G) + ZooKeeper (1G)
1台 Backup
NameNode (4G) + ZooKeeper (1G)
1台 Backup HMaster (4G) + ZooKeeper (1G)
ZooKeeper 亦可以运行在Worker 上 。
若干台 DataNode (1G) + HRegionServer (12G) ,不能再加 ZooKeeper
JobTracker: 2G
TaskTracker、TaskAttempt : 1G
(3)、磁盘:
Master Host 4 TB , SATA,RAID 0+1
Slave Host 6 TB, SATA,JBOD
SATA 驱动器比SAS 驱动器节省成本,因为软件策略中是跨机架数据冗余,无需使用安全性更高但是更贵的SAS。
RAID 模式 有利于保护关键性的文件系统数据,但是比单个磁盘慢。
(4)、机架:
Master Host 万兆以太网,双电源供应器,1~2个机架单元
Slave Host 万兆以太网,但电源供应器,1~2个机架单元
(5)、网络:
交换机
2、软件条件
(1)、操作系统:CentOS、Fedora、Debian、Ubuntu、Solaris、RedHat
(2)、文件系统:
ext3:
禁止记录文件访问时间戳以减少内核管理开销, 修改 /etc/fstab : /dev/sdd1 /data ext3 defaults,noatime 0 0
减少数据磁盘的保留快数量 (减少到1%), 命令:tune2fs -m 1 /dev/sdd1
ext4:关闭延迟分配
XFS:
注意不要在同一台服务器上安装不同的文件系统。
(3)、Java:1.6以上
(4)、Hadoop:
(5)、SSH:OpenSSH
(6)、域名服务器:
修改:/etc/hosts
修改属性hbase.regionserver.dfs.interface, hbase.regionserver.dfs.nameserver
(7)、同步时间:NTP
设置crontab: crontab -e
*/1 * * * * /usr/sbin/ntpdate asia.pool.ntp.org &>/dev/null
(8)、文件句柄和进程限制:
修改 /etc/sysctl.conf 的 fs.file-max
修改 /etc/security/limits.conf : hadoop - nofile 32768
修改 /etc/pam.d/common-session :session required pam_limits.so
修改 /etc/security/limits.conf 的 nproc
(9)、DataNode 处理线程数
在hdfs-site.xml 设置 dfs.datanode.xcievers 为 4096.
(10)、交换区
修改 /etc/sysctl.conf :vm.sqappiness=5
重启使其生效; sysctl -p
3、HBase 使用的文件系统
HDFS:包含了冗余、容错性和可扩展性。
S3:
4、运行模式
Zookeeper 的配置不要用 zoo,cfg, 而使用 hbase-site.xml
Zookeeper 使用奇数个节点 (3, 5, 7)
可以使用自带ZooKeeper,也可以使用独立的ZooKeeper (配置 hbase-env.sh 的 HBASE_MANAGES_ZK 为 true 或 false)。
5、配置
hbase-default.xml 和 hbase-site.xml :
hbase-env.sh: 可以配置Heap 的大小等 ,export HBASE_HEAPSIZE=4096 // MB
regionserver: (master 文件已经删除,因为 master 在启动时候会注册到 ZooKeeper,master 地址在 ZooKeeper 中动态获取)
6、部署
(1)、脚本
(2)、Apache Whirr
(3)、Puppet Chef
7、HBase Shell 常用命令
状态 status:
hbase(main):014:0> status
1 servers, 0 dead, 20.0000 average load
列出所有的表 list
hbase(main):014:0> list
create
create 'testtable', 'cf1', 'cf2'
scan
scan 'testtable'
put:
put 'testtable', 'myrow-1', 'cf1:a', 'value-1'
put 'testtable', 'myrow-1', 'cf1:b', 'value-2'
put 'testtable', 'myrow-1', 'cf2:c', 'value-3'
put 'testtable', 'myrow-1', 'cf2:d', 'value-4'
put 't2',"row-#{i}#{j}","cf1:#{j}","#{j}" end end
注意使用 符号 " " , # , { }