大数据实战(下)-搭建企业HBase(上)

大纲

实验环境讲解
演示搭建HBase步骤并讲解

实验环境讲解

架构:

  • namenode1(master1)
  • namenode2(master2)
  • datanode(regionserver)

使用NameNode1、NameNode2和DataNode1 三个服务器来模拟集群,NameNode1上搭建Hbase和Hmaster,NameNode2搭建Hmaster,与NameNode1互为主备,DataNode1上搭建regionserver,Hbase通过zookeeper来保存活跃的master节点信息,保证活跃的master节点出现问题时,备用master取代主master。

主机IP安装软件JPS启动进程
hadoop-namenode1192.168.235.196JDK/Zookeeper/Hadoop/HBasenamenode/zkfc/journalnode/resourcemanager/QuoqumPeerMain/Hmaster
hadoop-namenode2192.168.235.197JDK/Zookeeper/Hadoop/HBasenamenode/zkfc/journalnode/resourcemanager/QuoqumPeerMain/Hmaster
hadoop-datanode1192.168.235.198JDK/Zookeeper/Hadoop/HBasedatanode/journalnode/nodemanager/QuoqumPeerMain/Hregionserver

演示搭建HBase步骤并讲解

准备阶段

查看、修改Linux系统的最大文件打开数和最大进程数

ulimit –a //测试环境一般不用修改,但是商业应用时一般需要修改
ulimit参数
切换root用户
su
输入密码进入root用户
vim /etc/security/limits.conf

root    soft   nproc   50000
root    hard   nproc   50000
root    soft   nofile  25535
root    hard   nofile  25535
hadoop    soft   nproc   50000
hadoop    hard   nproc   50000
hadoop    soft   nofile  25535
hadoop    hard   nofile  25535

调用Linux内核参数

vim /etc/sysctl.conf
在sysctl.conf配置文件最后增加以下代码:

net.ipv4.ip_forward= 0
net.ipv4.conf.default.rp_filter= 1
net.ipv4.conf.default.accept_source_route= 0
kernel.core_users_pid= 1
net.ipv4.tcp_syncookies= 1
net.bridge.bridge-nf-call-ip6tables= 0
net.bridge.bridge-nf-call-iptables= 0
net.bridge.bridge-nf-call-arptables= 0
kernel.mggmnb= 65536
kernel.mggmax= 65536
kernel.shmmax= 68719476736
kernel.shmall= 268435456
net.ipv4.tcp_max_syn_backlog= 65000
net.core.netdev_max_backlog= 32768
net.core.somaxconn= 32768
fs.file-max= 65000
net.core.wmem_default= 8388608
net.core.rmem_default= 8388608
net.core.rmem_max= 16777216
net.core.wmem_max= 16777216
net.ipv4.tcp_timestamps= 1
net.ipv4.tcp_synack_retries= 2
net.ipv4.tcp_syn_retries= 2
net.ipv4.tcp_mem= 94500000 915000000 927000000
net.ipv4.tcp_max_orphans= 3276800
net.ipv4.tcp_tw_reuse= 1
net.ipv4.tcp_tw_recycle= 1
net.ipv4.tcp_keepalive_time= 1200
net.ipv4.tcp_syncookies= 1
net.ipv4.tcp_fin_timeout= 10
net.ipv4.tcp_keepalive_intvl= 15
net.ipv4.tcp_keepalive_probes= 3
net.ipv4.ip_local_port_range= 1024 65535
net.ipv4.conf.eml.send_redirects= 0
net.ipv4.conf.lo.send_redirects= 0
net.ipv4.conf.default.send_redirects= 0
net.ipv4.conf.all.send_redirects= 0
net.ipv4.icmp_echo_ignore_broadcasts= 1
net.ipv4.conf.eml.accept_source_route= 0
net.ipv4.conf.lo.accept_source_route= 0
net.ipv4.conf.default.accept_source_route= 0
net.ipv4.conf.all.accept_source_route= 0
net.ipv4.icmp_ignore_bogus_error_responses= 1
kernel.core_pattern= /tmp/core
vm.overcommit_memory= 1

输入以下命令使立即生效
sysctl -p

配置时间同步

如果集群节点时间不同步,可能会出现节点宕机或其它异常,生产环境中一般通过配置NTP服务器实现集群时间同步,需要确保各节点的时间差在10s以内,有条件最好隔一段时间同步一次。本集群在节点hadoop-namenode1中设置ntp服务器,具体方法如下:

切换至root用户
su root
查看、安装ntp
pm -qa | grep ntp
apt-get install -y ntp

配置时间服务器
vim /etc/ntp.conf
禁止所有机器连接ntp服务器
restrict default ignore
允许局域网内的所有机器连接ntp服务器
restrict 192.168.152.0 mask 255.255.255.0 nomodify notrap
使用本机作为时间服务器
server 127.127.1.0
启动ntp服务器
service ntpd start
设置ntp服务器开机自动启动
chkconfig ntpd on
集群其它节点通过执行crontab定时任务,每天在指定时间向ntp服务器进行时间同步,方法如下:
切换root用户
su root
执行定时任务,每天00:00向服务器同步时间,并写入日志
crontab -e
0 0 * * * /usr/sbin/ntpdate hadoop-namenode1>> /home/hadoop/ntpd.log

// 查看任务
crontab -l

HBase安装、配置

HBase安装

此处版本:
hbase-0.98.20-hadoop1-bin.tar.gz
解压安装
tar -xzf hbase-0.98.20-hadoop1-bin.tar.gz
删除安装软件
rm -rf hbase-0.98.20-hadoop1-bin.tar.gz

HBase配置

cd /home/songpingping/apache
mv hbase-0.98.20-hadoop1-bin hbase-0.98.20
cd hbase-0.98.20/conf
vim hbase-env.sh

增加如下配置信息:

export JAVA_HOME=/home/songpingping/apache/jdk1.7.0_79  //设置jdk的路径
export HBASE_HEAPSIZE=1024                      //设置hbase的堆(内存)的大小
export HBASE_MASTER_OPTS=”-Xmx512m”       //设置hmaster的内存,企业级一般为4-8G
export HBASE_REGIONSERVER_OPTS=”-Xmx1024m”   //设置regionserver的大小
export HBASE_LOG_DIR=${HBASE_HOME}/logs       //设置hbase日志路径
export HBASE_PID_DIR=/home/songpingping/apache/hbase-0.98.20/pids
export HBASE_MANAGES_ZK=false       //选用独立的zookeeper集群

vim hbase-site.xml
配置如下信息:

<!-- 关闭分布式日志切割,如果采用true会采用regionserver去对日志进行切割,但会产生大量的IO内存的消耗,建议填写false -->  
<property>  
  <name>hbase.master.distributed.log.splitting</name>  
  <value>false</value>  
</property> 
<!-- 设置hdfs的根路径,HRegionServers共享目录 -->  
<property>  
  <name>hbase.rootdir</name>  
  <value>hdfs://mycluster/hbase</value>  
</property> 
<!-- 开启分布式模式,false为单机模式 -->  
<property>  
  <name>hbase.cluster.distributed</name>  
  <value>true</value>  
</property> 
<!-- 设置HMaster的rpc端口 -->  
<property>  
  <name>hbase.master.port</name>  
  <value>60000</value>  
</property> 
<!-- 指定ZooKeeper集群位置列表 -->  
<property>  
  <name>hbase.zookeeper.quorum</name>  
  <value>hadoop-namenode1,hadoop-namenode2,hadoop-datanode1</value>  
</property> 
<!-- 指定Zookeeper数据目录,需要与ZooKeeper集群上配置相一致 -->  
<property>  
  <name>hbase.zookeeper.property.dataDir</name>  
  <value>/home/hadoop/apache/zookeeper-3.4.8/data</value>  
</property>  
<!-- hbase客户端rpc扫描一次调用的行数,提高扫描速度,但是会占用一定内存 -->  
<property>  
  <name>hbase.client.scanner.caching</name>  
  <value>2000</value>  
</property> 
<!-- HRegion分裂前最大的文件大小(默认10G) -->  
<property>  
  <name>hbase.hregion.max.filesize</name>  
  <value>10737418240</value>  
</property> 
<!-- 某个HRegionServer中最大的region数量,一般设置在2000左右 -->  
<property>  
  <name>hbase.regionserver.reginoSplitLimit</name>  
  <value>2000</value>  
</property> 
<!-- StoreFile的开始合并的数量,即个数超过这个数就开始合并,值越大合并的时间越长,默认值为3 -->  
<property>  
  <name>hbase.hstore.compactionThreshold</name>  
  <value>6</value>  
</property> 
<!-- 当一个region的storefile个数多于这个值的的时候,它会执行一个合并操作(block写入,等待compact),且会阻塞更新操作。默认为7,一般可以设置为15-20左右,设置太小会影响系统的吞吐率 -->  
<property>  
  <name>hbase.hstore.blockingStoreFiles</name>  
  <value>14</value>  
</property> 
<!-- 超过memstore大小的倍数达到该值则block所有写入请求,阻塞更新操作,进行自我保护 -->  
<property>  
  <name>hbase.hregion.memstore.block.multiplier</name>  
  <value>20</value>  
</property> 
<!-- server端后排线程的sleep间隔,默认为10000,单位:ms -->  
<property>  
  <name>hbase.server.thread.wakefrequency</name>  
  <value>500</value>  
</property>  
<!-- ZooKeeper客户端同时访问的最大并发连接数,zookeeper也要设置,都设置了才能发挥作用,建议设大一点,2000左右,比较重要 -->  
<property>  
  <name>hbase.zookeeper.property.maxClientCnxns</name>  
  <value>2000</value>  
</property> 
<!-- 设置一个regionserver里面menstore占总堆的百分比,达到设定的值以后,会让大的menstore刷写到磁盘,后两个值相加要小于0.8,否则会出现out of memory,根据业务情况进行配置 -->  
<property>  
  <name>hbase.regionserver.global.memstore.lowerLimit</name>  
  <value>0.3</value>  
</property>  
<property>  
  <name>hbase.regionserver.global.memstore.upperLimit</name>  
  <value>0.39</value>  
</property>  
<property>  
  <name>hbase.block.cache.size</name>  
  <value>0.4</value>  
</property>  
<!-- RegionServer的RPC请求处理IO线程数 -->  
<property>  
  <name>hbase.reginoserver.handler.count</name>  
  <value>300</value>  
</property>

<!-- 客户端最大重试次数,默认为10 -->  
<property>  
  <name>hbase.client.retries.number</name>  
  <value>5</value>  
</property> 
<!-- 客户端重试前的休眠时间,单位:ms -->  
<property>  
  <name>hbase.client.pause</name>  
  <value>100</value>  
</property>  
<!-- 指定ZooKeeper集群端口 -->  
<property>  
  <name>hbase.zookeeper.property.clientPort</name>  
  <value>2181</value>  
</property>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值