HBase分布式部署

272 阅读4分钟

1、版本对应(官网地址

121f5fde64854acc9a53353eb82a6488_64525328366dfa6410e858337429186c

选用版本:hadoop-3.1.4 + hbase-2.3.4 + apache-zookeeper-3.5.9 + java version "1.8.0_181"

1、安装包

 apache-zookeeper-3.5.9-bin.tar.gz
 hadoop-3.1.4.tar.gz
 hbase-2.3.4-bin.tar.gz
 jdk-8u181-linux-x64.tar.gz
 ​
 # 解压数据包、删除.txt.md.html.等无用的文本文件、删除.cmd的windows使用命令文件

2、下载链接

 https://www.apache.org/dyn/closer.lua/zookeeper/zookeeper-3.5.9/apache-zookeeper-3.5.9-bin.tar.gz
 https://archive.apache.org/dist/hadoop/common/hadoop-3.1.4/hadoop-3.1.4.tar.gz
 https://archive.apache.org/dist/hbase/2.3.4/hbase-2.3.4-bin.tar.gz
 https://mirrors.huaweicloud.com/java/jdk/8u181-b13/jdk-8u181-linux-x64.tar.gz

3、免密登录

 # 1、生成密钥:
 ssh-keygen -t rsa
 # 2、将公钥写入其他机器中
 /home/coremail/.ssh/authorized_keys
 ​
 scp -P56789 -i ~/.ssh/id_rsa id_rsa coremail@10.224.192.210:/home/coremail/.ssh/
 scp -P56789 -i ~/.ssh/id_rsa id_rsa coremail@10.224.192.206:/home/coremail/.ssh/
 ​
 # 3、测试登录:
 [coremail@test-194 .ssh]$ ssh-agent bash
 [coremail@test-194 .ssh]$ ssh-add ~/.ssh/id_rsa
 Identity added: /home/coremail/.ssh/id_rsa (/home/coremail/.ssh/id_rsa)
 ​
 [coremail@test-194 .ssh]$ ssh -A -p 56789 coremail@10.224.192.206
 Last login: Thu Apr 15 15:15:10 2021 from 10.224.192.194
 [coremail@test-206 ~]$

2、Hadoop分布式部署

hadoop2.xHadoop3.x
访问HDFS端口500709870
访问MR执行情况端口80888088
历史服务器1988819888
客户端访问集群端口90008020

1、部署节点分配

节点test-194test-206test-210
Zookeeper***
zkfc**
JournalNode***
NameNodeactivestandby
DataNode***
HMastermasterbackup-master
HRegeionServer***

2、 配置文件

core-site.xml是全局配置,hdfs-site.xml和mapred-site.xml分别是hdfs和mapred的局部配置。

core-default.html

 <configuration>
   
         <!-- 文件系统类型://主机名或ip:端口号 -->
         <property>
                 <name>fs.defaultFS</name>
                 <value>hdfs://test-194:8020</value>
         </property>
 ​
         <!-- 文件存储临时目录(需要创建)-->
         <property>
                 <name>hadoop.tmp.dir</name>
                 <value>/home/hadoop/data/tmp/</value>
         </property>
 ​
         <!-- 缓冲区大小 -->
         <property>
                 <name>io.file.buffer.size</name>
                 <value>4096</value>
         </property>
 ​
         <!-- 开启hdfs垃圾桶机制,删除文件后放到垃圾桶中,10080分钟后清理垃圾桶 -->
         <property>
                 <name>fs.trash.interval</name>
                 <value>10080</value>
         </property>
 </configuration>
 ​

hdfs-site.xml

 <configuration>
      
      <!-- 访问secondary node的地址,主机名:端口 -->  
      <property>
             <name>dfs.namenode.secondary.http-address</name>
             <value>test-194:9868</value>
     </property>
     
     <!-- namenode访问地址和端口 -->
     <property>
         <name>dfs.namenode.http-address</name>
         <value>test-194:9870</value>
     </property>
   
     <!-- namenode元数据存放位置(需要自己创建) -->
     <property>
         <name>dfs.namenode.name.dir</name>
         <value>file:///home/hadoop/data/namenodedatas</value>
     </property>
   
     <!--  定义dataNode数据存储的节点位置,实际工作中,一般先确定磁盘的挂载目录,然后多个目录用,进行分割  -->
     <property>
         <name>dfs.datanode.data.dir</name>
         <value>file:///home/hadoop/data/datanodedatas</value>
     </property>
    
     <!-- namenode日志文件存放目录(editslog) -->
     <property>
         <name>dfs.namenode.edits.dir</name>
         <value>file:///home/hadoop/data/dfs/name-edits</value>
     </property>
     
     <!-- secondarynamenode保存待合并的fsimage -->
     <property>
         <name>dfs.namenode.checkpoint.dir</name>
         <value>file:///home/hadoop/data/dfs/name</value>
     </property>
     
     <!-- secondarynamenode保存待合并的editslog -->
     <property>
         <name>dfs.namenode.checkpoint.edits.dir</name>
         <value>file:///home/hadoop/data/dfs/secondry-edits</value>
     </property>
   
     <!-- 每个文件切片的备份个数(默认为三个) -->
     <property>
         <name>dfs.replication</name>
         <value>3</value>
     </property>
   
     <!-- hdfs的文件权限 -->
     <property>
         <name>dfs.permissions.enabled</name>
         <value>false</value>
     </property>
   
   <!-- 设置一个文件切片的大小:128M -->
   <property>
         <name>dfs.blocksize</name>
         <value>134217728</value>
     </property>
 </configuration>

hadoop-env.sh

 export JAVA_HOME=/usr/local/jdk
 ​
 export HADOOP_SSH_OPTS="-p 56789"

mapred-env.sh

 export JAVA_HOME=/usr/local/jdk

mapred-site.xml

 <configuration>
     
     <!--  -->
     <property>
         <name>mapreduce.framework.name</name>
         <value>yarn</value>
     </property>
   
     <!-- 开启mapreduce的小任务模式 -->
     <property>
         <name>mapreduce.job.ubertask.enable</name>
         <value>true</value>
     </property>
   
     <!-- 设置历史任务的主机和端口 -->
     <property>
         <name>mapreduce.jobhistory.address</name>
         <value>test-194:10020</value>
     </property>
   
     <!-- 通过网页访问历史任务的主机和端口 -->
     <property>
         <name>mapreduce.jobhistory.webapp.address</name>
         <value>test-194:19888</value>
     </property>
   
     
     <property>
         <name>yarn.app.mapreduce.am.env</name>
         <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
     </property>
     <property>
         <name>mapreduce.map.env</name>
         <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
     </property>
     <property>
         <name>mapreduce.reduce.env</name>
         <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
     </property>
 </configuration>

yarn-site.xml

 <configuration>
     
     <!-- 配置yarn.resourcemanager的主机名 -->
     <property>
        <name>yarn.resourcemanager.hostname</name>
         <value>test-194</value>
     </property>
   
     <property>
         <name>yarn.nodemanager.aux-services</name>
         <value>mapreduce_shuffle</value>
     </property>  
   
     <!-- 如果vmem、pmem资源不够,会报错,此处将资源监察置为false -->
     <property>
         <name>yarn.nodemanager.vmem-check-enabled</name>
         <value>false</value>
     </property>
     <property>
         <name>yarn.nodemanager.pmem-check-enabled</name>
         <value>false</value>
     </property>
 </configuration>

workers

 test-194
 test-206
 test-210

创建对应目录

 mkdir -p /home/hadoop/data/tmp/
 mkdir -p /home/hadoop/data/namenodedatas
 mkdir -p /home/hadoop/data/datanodedatas
 mkdir -p /home/hadoop/data/dfs/name-edits
 mkdir -p /home/hadoop/data/dfs/name
 mkdir -p /home/hadoop/data/dfs/secondry-edits

环境变量

 export HADOOP_HOME=/home/hadoop
 export PATH=:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

3、 启动集群

(主节点上执行以下命令)

 start-dfs.sh
 start-yarn.sh
 # 已过时mr-jobhistory-daemon.sh start historyserver
 mapred --daemon start historyserver

停止集群

 stop-dfs.sh
 stop-yarn.sh 
 # 已过时 mr-jobhistory-daemon.sh stop historyserver
 mapred --daemon stop historyserver

逐个启动

 # 在主节点上使用以下命令启动 HDFS NameNode: 
 # 已过时 hadoop-daemon.sh start namenode 
 hdfs --daemon start namenode
 ​
 # 在主节点上使用以下命令启动 HDFS SecondaryNamenode: 
 # 已过时 hadoop-daemon.sh start secondarynamenode 
 hdfs --daemon start secondarynamenode
 ​
 # 在每个从节点上使用以下命令启动 HDFS DataNode: 
 # 已过时 hadoop-daemon.sh start datanode
 hdfs --daemon start datanode
 ​
 # 在主节点上使用以下命令启动 YARN ResourceManager: 
 # 已过时 yarn-daemon.sh start resourcemanager 
 yarn --daemon start resourcemanager
 ​
 # 在每个从节点上使用以下命令启动 YARN nodemanager: 
 # 已过时 yarn-daemon.sh start nodemanager 
 yarn --daemon start nodemanager
 ​
 #以上脚本位于$HADOOP_HOME/sbin/目录下。如果想要停止某个节点上某个角色,只需要把命令中的start 改为stop 即可。

检验节点

 [root@test-194 ~]# jps
 14627 SecondaryNameNode
 14915 ResourceManager
 15636 Jps
 14405 DataNode
 15447 JobHistoryServer
 15033 NodeManager
 14283 NameNode
 ​
 [root@test-206 ~]# jps
 5832 Jps
 5611 NodeManager
 5455 DataNode
 ​
 [root@test-210 ~]# jps
 21073 Jps
 13201 DataNode
 13663 NodeManager

3、Zookeeper部署

zookeeper:开源分布式协调服务框架,主要解决分布式系统中的一致性和数据管理问题。

本质上是分布式文件系统,适合存放小的文件(最好不超过1M),也可以理解为数据库(存放配置文件)。

端口号详解
3888选举Leader。
2888集群内的机器通讯使用。(Leader使用此端口)
2181对Client端提供服务的端口。

1、解压文件

 [root@test-194 file]# tar -zxvf apache-zookeeper-3.5.9-bin.tar.gz  -C /home/

2、同步时钟

 [root@test-194 ~]# ntpdate time1.aliyun.com
 [root@test-206 ~]# ntpdate time1.aliyun.com
 [root@test-210 ~]# ntpdate time1.aliyun.com

3、zoo.cfg配置文件

 tickTime=2000
 initLimit=10
 syncLimit=5
 dataDir=/home/zookeeper/zkdatas
 clientPort=2181
 ​
 #保留多少个快照(默认3)
 autopurge.snapRetainCount=3
 ​
 #日志多久清理一次(默认1h)
 autopurge.purgeInterval=1
 ​
 #服务器集群地址
 #mid.1=node01:端口1:端口2
 server.1=test-194:2888:3888
 server.2=test-206:2888:3888
 server.3=test-210:2888:3888

4、添加mid

 #创建zkdatas目录
 mkdir -p /home/zookeeper/zkdatas
 echo 1 > /home/zookeeper/zkdatas/myid

5、启动zookeeper

 #启动zookeeper
 ./bin/zkServer.sh start
 ​
 #查看zookeeper状态
 [root@test-194 zookeeper]# ./bin/zkServer.sh status
 /usr/local/jdk/bin/java
 ZooKeeper JMX enabled by default
 Using config: /home/zookeeper/bin/../conf/zoo.cfg
 Client port found: 2181. Client address: localhost. Client SSL: false.
 #从
 Mode: follower
 #主
 Mode: leader

4、HBase部署

1、解压安装包

 [root@test-194 file]# tar -zxvf hbase-2.3.4-bin.tar.gz -C /home/

2、regionservers配置文件

 test-194
 test-206
 test-210

3、hbase-env.sh配置文件

 # jdk环境变量
 export JAVA_HOME=/usr/local/jdk/
 # 不使用内置zookeeper
 export HBASE_MANAGES_ZK=false
 # ssh端口
 export HBASE_SSH_OPTS="-p 56789"

4、hbase-site.xml配置文件

 <configuration>
 ​
   <!-- 本地文件系统 的临时文件夹(重新启动计算机将清空 /tmp目录) -->
   <property>
     <name>hbase.tmp.dir</name>
     <value>/home/hbase/tmp</value>
   </property>
   
   <!-- hbase根目录 -->
   <property>
     <name>hbase.rootdir</name>
     <value>hdfs://test-194:8020/hbase</value>
   </property>
   
   <!-- 分布式(false表示单机模式)  -->
   <property>
     <name>hbase.cluster.distributed</name>
     <value>true</value>
   </property>
   
   <!-- zookeeper集群 -->
   <property>
     <name>hbase.zookeeper.quorum</name>
     <value>test-194,test-206,test-210</value>
   </property>
   
   <!-- zookeeper工作目录 -->
   <property>
     <name>hbase.zookeeper.property.dataDir</name>
     <value>/home/zookeeper/zkDatas</value>
   </property>
   
 </configuration>
 ​
 ​
   <!-- 默认端口(0.98以前是60000,可以不配置) -->
   <property>
     <name>hbase.master.port</name>
     <value>16000</value>
   </property>
 ​
   <!-- hbase master的web UI页面端口(默认16010,可以不配置) -->
   <property>
     <name>hbase.master.info.port</name>
     <value>16010</value>
     <description>the port for the hbase master web UI
         set to -1 if you do not wan a UI instance run
     </description>
   </property>

5、制作Hadoop配置文件的软连接

 ln -s /home/hadoop/etc/hadoop/core-site.xml /home/hbase/conf/core-site.xml
 ln -s /home/hadoop/etc/hadoop/hdfs-site.xml /home/hbase/conf/hdfs-site.xml

6、启动HBase

 /home/hbase/bin/start-hbase.sh

5、最终结果

 [root@test-194 ~]# jps
 12096 QuorumPeerMain
 17314 Jps
 16706 HMaster
 14627 SecondaryNameNode
 14915 ResourceManager
 14405 DataNode
 15447 JobHistoryServer
 15033 NodeManager
 16202 HRegionServer
 14283 NameNode
 
 [root@test-206 ~]# jps
 4932 QuorumPeerMain
 5911 HRegionServer
 5611 NodeManager
 6175 Jps
 5455 DataNode
 
 [root@test-210 ~]# jps
 13201 DataNode
 1188 Jps
 3976 QuorumPeerMain
 25914 HRegionServer
 13663 NodeManager
 Web UI:
 ​
 YARN:http://10.224.192.194:8088/cluster
 overview:http://10.224.192.194:9870/dfshealth.html#tab-overview
 历史日志:http://10.224.192.194:19888/jobhistory
 HBase:http://10.224.192.194:16010/master-status