企业级HBase搭建

    xiaoxiao2025-09-07  664

    企业级HBase搭建

    HBase介绍

    这部分请参考我的博文:Hadoop数据存储

    企业级HBase参数配置

    设置linux系统最大进程数和最大文件打开数

    使用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

    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生效

    修改hbase-env.sh

    配置JDK安装路径

    exportJAVA_HOME=/home/hadoop/app/jdk1.7.0_79

    配置Hadoop安装路径

    exportHADOOP_HOME=/home/hadoop/hadoop2.7.2

    设置HBase的日志目录

    exportHBASE_LOG_DIR=${HBASE_HOME}/logs

    设置HBase的pid目录

    exportHBASE_PID_DIR=${HBASE_HOME}/pids

    使用独立的ZooKeeper集群

    exportHBASE_MANAGES_ZK=false

    优化配置项

    设置HBase内存堆的大小

    exportHBASE_HEAPSIZE=1024

    设置HMaster最大可用内存

    exportHBASE_MASTER_OPTS="-Xmx512m"

    设置HRegionServer最大可用内存

    exportHBASE_REGIONSERVER_OPTS="-Xmx1024m"

    配置hbase-site.xml

    <configuration> <!-- 设置HRegionServers共享目录 -->  <property> <name>hbase.rootdir</name> <value>hdfs://mycluster/hbase</value> </property> <!-- 设置HMaster的rpc端口 --> <property> <name>hbase.master.port</name> <value>16000</value> </property> <!-- 设置HMaster的http端口 -->  <property> <name>hbase.master.info.port</name> <value>16010</value> </property> <!-- 指定缓存文件存储的路径 --> <property> <name>hbase.tmp.dir</name> <value>/home/hadoop/hbase-0.98.20/tmp</value> </property> <!-- 开启分布式模式 --> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> <!-- 指定ZooKeeper集群位置 -->  <property> <name>hbase.zookeeper.quorum</name> <value>slave1,slave2,slave3,master1,master2</value> </property> <!-- 指定ZooKeeper集群端口 -->  <property> <name>hbase.zookeeper.property.clientPort</name> <value>2181</value> </property> <!--指定Zookeeper数据目录,需要与ZooKeeper集群上配置相一致 --> <property> <name>hbase.zookeeper.property.dataDir</name> <value>/home/hadoopzookeeper-3.4.6/data</value> </property> <!-- 以下为优化配置项 -->   <!-- 关闭分布式日志拆分 -->  <property> <name>hbase.master.distributed.log.splitting</name> <value>false</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数量 -->  <property> <name>hbase.regionserver.reginoSplitLimit</name> <value>2000</value> </property> <!-- StoreFile的个数超过这个数就开始合并 -->  <property> <name>hbase.hstore.compactionThreshold</name> <value>6</value> </property> <!-- 当某一个region的storefile个数达到该值则block写入,等待compact -->  <property> <name>hbase.hstore.blockingStoreFiles</name> <value>14</value> </property> <!-- 超过memstore大小的倍数达到该值则block所有写入请求,自我保护 --> <property> <name>hbase.hregion.memstore.block.multiplier</name> <value>20</value> </property> <!-- service工作的sleep间隔 --> <property> <name>hbase.server.thread.wakefrequency</name> <value>500</value> </property> <!-- ZooKeeper客户端同时访问的并发连接数 -->  <property> <name>hbase.zookeeper.property.maxClientCnxns</name> <value>2000</value> </property> <!-- 根据业务情况进行配置 -->   <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的请求处理IO线程数 --> <property> <name>hbase.reginoserver.handler.count</name> <value>300</value> </property> <!-- 客户端最大重试次数 --> <property> <name>hbase.client.retries.number</name> <value>5</value> </property> <!-- 客户端重试的休眠时间 --> <property> <name>hbase.client.pause</name> <value>100</value> </property> </configuration>

    配置regionservers

    vim regionservers

    slave1

    slave2

    slave3

    新建backup-masters文件并配置

    $ vim backup-masters

    master2

    创建hbase的缓存文件目录

    $ cd /home/hadoop/hbase-0.98.20/

    $ mkdir tmp

    创建hbase的日志文件目录

    $ cd /home/hadoop/hbase-0.98.20/

    $ mkdir logs

    创建hbase的pid文件目录

    $ cd /home/hadoop/hbase-0.98.20/

    $ mkdir pids

    将hbase工作目录同步到集群其它节点

    $ scp -r /home/hadoop/hbase-0.98.20/ master2:/home/hadoop/

    $ scp -r /home/hadoop/hbase-0.98.20/ slave1:/home/hadoop/

    $ scp -r /home/hadoop/hbase-0.98.20/ slave2:/home/hadoop/

    $ scp -r /home/hadoop/hbase-0.98.20/ slave3:/home/hadoop/

    启动集群

    先启动zookeeper,再Hadoop,最后HBase。

    动态替换节点

    Hadoop动态添加节点

    (一)设置新节点与集群NameNode的SSH无密码登录

    (二)在hosts文件中添加主机名和IP地址,并将该文件同步到集群其它节点

    (三)修改hadoop配置文件slaves,加入新节点的主机名

    (四)在新节点通过命令hadoop-daemon.shstart datanode和yarn-daemon.sh start nodemanager启动datanode和nodemanager进程

    (五)在新节点中通过命令start-balancer.sh均衡当前的HDFS块,在执行前可通过命令Hdfs dfsadmin -setBalancerBandwidth字节数 设置带宽

    Hadoop动态删除节点

    (一)在hadoop配置文件hdfs-site.xml中配置如下:

    <property>

    <name>dfs.hosts.exclude</name>

    <value>/home/hadoop/hadoop-2.7.2/etc/hadoop/exclude</value>

    </property>

    (二)在配置文件exclude中添加需要删除的节点主机名

    (三)通过命令hdfsafsadmin -refreshNodes执行节点刷新操作

    (四)通过命令hdfsafsadmin -report可查看该节点状况

    HBase动态添加节点

    (一)在HBase的配置文件regionserver中添加新节点的主机名

    (二)在新节点通过命令hbase-daemon.shstart regionserver启动HRegionServer

    (三)进入hbaseshell,通过命令balance_switch true进行region平衡

    HBase动态删除节点

    (一)通过命令graceful_stop.sh主机名 停止需要删除的节点

    (二)在HBase的配置文件regionserver中移除删除节点的主机名

    转载请注明原文地址: https://ju.6miu.com/read-1302390.html
    最新回复(0)