Hadoop安装(HA架构)

Hadoop高可用架构安装

文章目录

  • Hadoop高可用架构安装
    • 服务器规划
    • ZooKeeper安装
    • Hadoop安装
      • 配置文件
        • 1、core-site.xml
        • 2、hdfs-site.xml
        • 3、mapred-site.xml
        • 4 、yarn-site.xml
        • 5、worker配置
        • 6、修改启动/停止脚本
        • 7、 启动ZooKeeper进程
        • 8、启动JournalNode进程
        • 9、格式化NameNode和ZKFC
        • 10、启动ZookeeperFailoverController、HDFS、YARN
        • 11、执行FsImage元数据同步命令
        • 12、启动jobhistory服务
        • 13、查看集群组件服务状态
    • HBase安装
        • 1、配置hbase-env.sh
        • 2、配置hbase-site.xml
        • 3、配置RegionServers
        • 4、创建hdfs-site.xml的软链到hbase的conf目录下
        • 3、配置RegionServers
        • 4、创建hdfs-site.xml的软链到hbase的conf目录下

服务器规划

Hadoop1 Hadoop2 Hadoop3
NameNode NameNode
DataNode DataNode DataNode
JournalNode JournalNode JournalNode
DFSZKFailoverController DFSZKFailoverController DFSZKFailoverController
ResourceManager ResourceManager
NodeManager NodeManager NodeManager
JobHistoryServer JobHistoryServer
ZooKeeper ZooKeeper ZooKeeper
HBase Master HBase Master
RegionServer RegionServer RegionServer

ZooKeeper安装

1、修改zookeeper配置文件

cp zoo_sample.cfg zoo.cfg
vim zoo.cfg		
# 修改该行配置
dataDir=/opt/module/apache-zookeeper-3.7.0/data
# 在该文件最后添加,指定zookeeper集群主机及端口,节点数必须为奇数
server.1=hadoop1:2888:3888
server.2=hadoop2:2888:3888
server.3=hadoop3:2888:3888

2、在/opt/module/apache-zookeeper-3.7.0创建data目录,创建myid

mkdir /opt/module/apache-zookeeper-3.7.0/data

touch myid
vim myid
#文件内容为1
#在myid中设置文件内容即表示当前节点为在zoo.cfg中指定的server.1

3、将zk的目录拷贝到其他几台几台节点服务器

scp -r /opt/module/apache-zookeeper-3.7.0 hadoop2:/opt/module/
#更改zk的data中myi文件内容为2

scp -r /opt/module/apache-zookeeper-3.7.0 hadoop2:/opt/module/
#更改zk的data中myi文件内容为3

4、配置zk的环境变量

vim /etc/profile
#新增
export ZOOKEEPER_HOME=/opt/module/apache-zookeeper-3.7.0
export PATH=ZOOKEEPER_HOME/bin:$PATH


source /etc/profile

5、启动zookeeper

在每个节点上运行

zkServer.sh start	

##查看角色
zkServer.sh status


#jps查看进程

Hadoop安装

配置文件

1、core-site.xml

加入zk服务

<configuration>
  
    <property>
        <name>fs.defaultFSname>
        <value>hdfs://hadddpappvalue>
    property>
  
    <property>
        <name>hadoop.tmp.dirname>
        <value>/opt/module/hadoop-3.1.3/tmpvalue>
    property>

  
  <property>
    <name>ha.zookeeper.quorumname>
    <value>hadoop1:2181,hadoop2:2181,hadoop3:2181value>
  property>

  
    <property>
        <name>hadoop.http.staticuser.username>
        <value>rootvalue>
    property>

configuration>

2、hdfs-site.xml

<configuration>
  
  
  <property>
    <name>dfs.nameservicesname>
    <value>hadoopappvalue>
  property>
 
    
  <property>
    <name>dfs.ha.namenodes.hadoopappname>
    <value>hadoop1,hadoop3value>
  property>
  
  
  <property>
    <name>dfs.namenode.rpc-address.hadoopapp.hadoop1name>
    <value>hadoop1:9000value>
  property>
  
      
  <property>
    <name>dfs.namenode.rpc-address.hadoopapp.hadoop3name>
    <value>hadoop3:9000value>
  property>
  
    
  <property>
    <name>dfs.namenode.http-address.hadoopapp.hadoop1name>
    <value>hadoop1:50070value>
  property>

  
  <property>
    <name>dfs.namenode.http-address.hadoopapp.hadoop3name>
    <value>hadoop3:50070value>
  property>

  
  <property>
    <name>dfs.namenode.shared.edits.dirname>
    <value>qjournal://hadoop1:8485;hadoop2:8485;hadoop3:8485/hadoopappvalue>
  property>
  
  
  <property>
    <name>dfs.journalnode.edits.dirname>
    <value>/opt/module/hadoop-3.1.3/tmp/dfs/journalnodevalue>
  property>

  
  <property>
    <name>dfs.ha.automatic-failover.enabled.hadoopappname>
    <value>truevalue>
  property>

  
  <property>
    <name>dfs.client.failover.proxy.provider.hadoopappname>  <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvidervalue>
  property>
    
  
  <property>
    <name>dfs.ha.fencing.methodsname>
    <value>sshfence 
        shell(/bin/true)value>
  property>

  
  <property>
    <name>dfs.ha.fencing.ssh.private-key-filesname>
    <value>/root/.ssh/id_rsavalue>
  property>

  
  <property>
    <name>dfs.ha.fencing.ssh.connect-timeoutname>
    <value>30000value>
  property>
 
    
    
    <property>
        <name>dfs.replicationname>
        <value>3value>
    property> 
configuration>

3、mapred-site.xml


<configuration>
  <property>
    <name>mapreduce.framework.namename>
    <value>yarnvalue>
  property>

   
<property>
        <name>mapreduce.jobhistory.addressname>
        <value>hadoop1:10020value>
property>

  
<property>
  <name>mapreduce.jobhistory.webapp.addressname>
  <value>hadoop1:19888value>
property>

  
  <property>
        <name>mapreduce.jobhistory.done-dirname>
        <value>/history/donevalue>
  property>

  
<property>
        <name>mapreduce.jobhistory.intermediate-done-dirname>
        <value>/history/done_intermediatevalue>
property>

  
<property>
<name>yarn.app.mapreduce.am.staging-dirname>
<value>/history/stagingvalue>
property>

# web上默认最多显示20000个历史的作业记录信息,这里设为1000个。
<property>
     <name>mapreduce.jobhistory.joblist.cache.sizename>
       <value>1000value>
   property>

   <property>
       <name>mapreduce.jobhistory.cleaner.enablename>
       <value>truevalue>
   property>

  
  <property>
      <name>mapreduce.jobhistory.cleaner.interval-msname>
       <value>86400000value>
   property>

  
  <property>
     <name>mapreduce.jobhistory.max-age-msname>
      <value>432000000value>
  property>
configuration>


//注意,这里加入yarn执行application(job)的日志记录进程,因为hadoop1和hadoop3做了HA,所以hadoop1和hadoop3节点都配上该jobhistory服务,hadoop2节点不需要。

4 、yarn-site.xml

<configuration>
  
  <property>
    <name>yarn.resourcemanager.ha.enabledname>
    <value>truevalue>
  property>

  
  <property>
    <name>yarn.resourcemanager.cluster-idname>
    <value>hayarnvalue>
  property>

  
  <property>
    <name>yarn.resourcemanager.ha.rm-idsname>
    <value>rm1,rm2value>
  property>
  
  
  <property>
    <name>yarn.resourcemanager.hostname.rm1name>
    <value>hadoop1value>
  property>
  
  
  <property>
    <name>yarn.resourcemanager.hostname.rm2name>
    <value>hadoop3value>
  property>
  
  
  <property>
    <name>yarn.resourcemanager.ha.idname>
    <value>rm1value>
  property>
  
  
  <property>
    <name>yarn.resourcemanager.zk-addressname>
    <value>hadoop1:2181,hadoop2:2181,hadoop3:2181value>
  property>
  
  
  <property>
    <name>yarn.nodemanager.aux-servicesname>
    <value>mapreduce_shufflevalue>
  property>
configuration>

  
  <property>
   	<name>yarn.nodemanager.pmem-check-enabledname>
   	<value>falsevalue>
  property>
  <property>
   	<name>yarn.nodemanager.vmem-check-enabledname>
   	<value>falsevalue>
  property>
configuration>

5、worker配置

三个节点都设为datanode,在生产环境中,DD不要跟DN放在同一台服务器

hadoop1
hadoop2
hadoop3

6、修改启动/停止脚本

start-dfs.sh和stop-dfs.sh头部增加

#三个节点都需要增加下面内容
HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
HDFS_ZKFC_USER=root
HDFS_JOURNALNODE_USER=root

start-yarn.sh和stop-dfs.sh头部增加

# 三个节点都需要增加下面内容
YARN_RESOURCEMANAGER_USER=root
HDFS_DATANODE_SECURE_USER=yarn
YARN_NODEMANAGER_USER=root

7、 启动ZooKeeper进程

zkServer.sh start

8、启动JournalNode进程

hdfs --daemon start journalnode

9、格式化NameNode和ZKFC

在NameNode节点上进行操作

#初始化hdfs
hdfs namenode -format

#初始化zkfc
hdfs zkfc -formatZK

10、启动ZookeeperFailoverController、HDFS、YARN

1、在NameNode主备节点上分别进行操作

hdfs --daemon start zkfc

2、在NameNode主节点上执行

#启动hdfs
start-dfs.sh
#启动yarn
start-yarn.sh

结果:

Hadoop安装(HA架构)_第1张图片

Hadoop安装(HA架构)_第2张图片

Hadoop安装(HA架构)_第3张图片

11、执行FsImage元数据同步命令

hdfs namenode -bootstrapStandby

Hadoop安装(HA架构)_第4张图片

12、启动jobhistory服务

mapred --daemon start  historyserver

13、查看集群组件服务状态

#在namenode主节点上
hdfs haadmin -getServiceState hadoop1
#显示active

hdfs haadmin -getServiceState hadoop3
#显示standby
#查看namenode状态,浏览器打开如下链接
http://hadoop1:50070

Hadoop安装(HA架构)_第5张图片

Hadoop安装(HA架构)_第6张图片

#在namenode主节点上,查看RM节点的主备状态
yarn rmadmin -getServiceState rm1
#显示standby

yarn rmadmin -getServiceState rm2
#显示active
#浏览器输入查看rm的状态
http://hadoop1:8088
#由于rm2是主节点,会自动跳转到这个地址
http://hadoop3:8088

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TJnRcgzo-1648730359731)(C:\Users\Hou\AppData\Roaming\Typora\typora-user-images\image-20220325142028237.png)]

至此负责底层分布式存储的Hadoop HA高可用已经完整实现


HBase安装

1、配置hbase-env.sh

#增加
export JAVA_HOME=
export HBASE_MANAGES_ZK=false

## 以上配置在三个节点上配置(其实只需在hadoop1和hadoop3 HMaster节点配置),为了避免以后需将hadoop2作为主节点时因之前漏了配置导致启动服务各种报错。

2、配置hbase-site.xml

<configuration>
  
  <property>
    <name>hbase.rootdirname>
    <value>hdfs://hadoopapp/hbasevalue>
  property>

  
  <property>
    <name>hbase.cluster.distributedname>
    <value>truevalue>
  property>
  
  
  <property>
    <name>hbase.unsafe.stream.capability.enforcename>
    <value>falsevalue>
  property>

  
  <property>
    <name>hbase.zookeeper.quorumname>
    <value>hadoop1,hadoop2,hadoop3value>
  property>

  
  <property>
    <name>hbase.zookeeper.property.dataDirname>
    <value>/opt/module/zookeeper-3.4.14value>
  property>

  
  <property>
    <name>hbase.zookeeper.property.clientPortname>
    <value>2181value>
  property>
configuration>

## 以上配置在三个节点配上

3、配置RegionServers

vim regionservers

#填写 
hadoop1
hadoop2
hadoop3
## 以上在三个节点配置

4、创建hdfs-site.xml的软链到hbase的conf目录下

## 该操作在三个节点上都要执行,这一环节的配置非常关键,HBase团队也给出相关解释:
## 目的是为了HBase能够同步hdfs配置变化,例如当hdfs副本数改为5时,如果不创建这种配置映射,那么HBase还是按默认的3份去执行。
## 若缺少这个软链接,HBase启动集群服务有问题,部分RegionServer无法启动!
ln -s /opt/module/hadoop-3.1.2/etc/hadoop/hdfs-site.xml /opt/module/hbase-2.4.9/conf/hdfs-site.xml

## 查看结果
ll hdfs-site.xml

e>2181


~~~ shell
## 以上配置在三个节点配上

3、配置RegionServers

vim regionservers

#填写 
hadoop1
hadoop2
hadoop3
## 以上在三个节点配置

4、创建hdfs-site.xml的软链到hbase的conf目录下

## 该操作在三个节点上都要执行,这一环节的配置非常关键,HBase团队也给出相关解释:
## 目的是为了HBase能够同步hdfs配置变化,例如当hdfs副本数改为5时,如果不创建这种配置映射,那么HBase还是按默认的3份去执行。
## 若缺少这个软链接,HBase启动集群服务有问题,部分RegionServer无法启动!
ln -s /opt/module/hadoop-3.1.2/etc/hadoop/hdfs-site.xml /opt/module/hbase-2.4.9/conf/hdfs-site.xml

## 查看结果
ll hdfs-site.xml

你可能感兴趣的:(大数据Hadoop,hadoop,hbase,big,data,大数据)