首页 > 其他分享 >大数据必知必会:Hadoop(4)高可用集群安装

大数据必知必会:Hadoop(4)高可用集群安装

时间:2023-01-23 20:00:21浏览次数:67  
标签:00 必知 100% hadoop Hadoop ssh 必会 node1

(大数据必知必会:Hadoop(4)高可用集群安装)

安装前准备

高可用集群环境下,至少需要3台服务器,这里准备5台。

IP地址 主机名称 角色
10.0.0.5 node1 NameNode
10.0.0.6 node2 NameNode
10.0.0.7 node3 DataNode
10.0.0.8 node4 DataNode
10.0.0.9 node5 DataNode

需要保证每台服务器的配置都一致,以下步骤在5台服务器上都需要做一次。

操作系统准备

本次安装采用的操作系统是Ubuntu 20.04。

更新一下软件包列表。

sudo apt-get update

安装Java 8+

使用命令安装Java 8。

sudo apt-get install -y openjdk-8-jdk

配置环境变量。

vi ~/.bashrc

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64

让环境变量生效。

source ~/.bashrc

下载Hadoop安装包

从Hadoop官网Apache Hadoop下载安装包软件。

image-20230120200957218.png

或者直接通过命令下载。

wget https://dlcdn.apache.org/hadoop/common/hadoop-3.3.4/hadoop-3.3.4.tar.gz

image-20230122004400490.png

安装Zookeeper

可以选择以下任意一种方式安装Zookeeper,本文选择集群环境安装。

单机环境安装

参考[大数据必知必会:Zookeeper(1)单机环境安装]

伪分布式安装

参考[大数据必知必会:Zookeeper(2)伪分布式安装]

集群环境安装

参考[大数据必知必会:Zookeeper(3)集群环境安装]

高可用集群安装

高可用集群是在多个节点上运行进程来实现Hadoop集群,并在集群中提供两个NameNode、两个ResourceManager节点。

配置域名解析

在后续使用过程中,都使用主机名称,所以需要配置域名解析。

配置 /etc/hosts

由于该配置文件的修改需要root权限,所以在每个节点上都手动配置。

10.0.0.5 node1
10.0.0.6 node2
10.0.0.7 node3
10.0.0.8 node4
10.0.0.8 node5

以下配置过程在node1上完成,并且配置完成后将配置文件复制到其他节点。

配置免密登录

Hadoop分布式集群的运行,需要配置密钥对实现免密登录。

  • 创建公私钥对
hadoop@node1:~$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/hadoop/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/hadoop/.ssh/id_rsa
Your public key has been saved in /home/hadoop/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:pp2AC1bQAQ5J6CJJCij1QA7bgKOsVxpoPVNi+cxhcyg hadoop@node1
The key's randomart image is:
+---[RSA 3072]----+
|O=*oo..          |
|OX E.* .         |
|X+* @ +          |
|B+.=.=           |
|= o++ . S        |
|..o. . = .       |
| .  . . o        |
|                 |
|                 |
+----[SHA256]-----+
  • 复制公钥
hadoop@node1:~$ cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
  • 复制到其他节点
hadoop@node1:~$ scp -r .ssh node1:~/
id_rsa.pub                                   100%  566     1.7MB/s   00:00    
authorized_keys                              100%  566     2.0MB/s   00:00    
known_hosts                                  100% 1332     4.5MB/s   00:00    
id_rsa                                       100% 2602    10.1MB/s   00:00    
hadoop@node1:~$ scp -r .ssh node2:~/
hadoop@node2's password: 
id_rsa.pub                                   100%  566   934.6KB/s   00:00    
authorized_keys                              100%  566   107.3KB/s   00:00    
known_hosts                                  100% 1332     2.5MB/s   00:00    
id_rsa                                       100% 2602     4.8MB/s   00:00    
hadoop@node1:~$ scp -r .ssh node3:~/
hadoop@node3's password: 
id_rsa.pub                                   100%  566     1.0MB/s   00:00    
authorized_keys                              100%  566     1.3MB/s   00:00    
known_hosts                                  100% 1332     2.8MB/s   00:00    
id_rsa                                       100% 2602     5.2MB/s   00:00    
hadoop@node1:~$ scp -r .ssh node4:~/
hadoop@node3's password: 
id_rsa.pub                                   100%  566     1.0MB/s   00:00    
authorized_keys                              100%  566     1.3MB/s   00:00    
known_hosts                                  100% 1332     2.8MB/s   00:00    
id_rsa                                       100% 2602     5.2MB/s   00:00    
hadoop@node1:~$ scp -r .ssh node5:~/
hadoop@node3's password: 
id_rsa.pub                                   100%  566     1.0MB/s   00:00    
authorized_keys                              100%  566     1.3MB/s   00:00    
known_hosts                                  100% 1332     2.8MB/s   00:00    
id_rsa                                       100% 2602     5.2MB/s   00:00    

确保执行ssh命令的时候不需要输入密码。

hadoop@node1:~$ ssh node1
hadoop@node1:~$ ssh node2
hadoop@node1:~$ ssh node3
hadoop@node1:~$ ssh node4
hadoop@node1:~$ ssh node5

解压安装包

将安装包解压到目标路径。

hadoop@node1:~$ mkdir -p apps
hadoop@node1:~$ tar -xzf hadoop-3.3.4.tar.gz -C apps

image-20230122005658601.png

bin目录下存放的是Hadoop相关的常用命令,比如操作HDFS的hdfs命令,以及hadoop、yarn等命令。

etc目录下存放的是Hadoop的配置文件,对HDFS、MapReduce、YARN以及集群节点列表的配置都在这个里面。

sbin目录下存放的是管理集群相关的命令,比如启动集群、启动HDFS、启动YARN、停止集群等的命令。

share目录下存放了一些Hadoop的相关资源,比如文档以及各个模块的Jar包。

配置环境变量

在集群的每个节点上都配置Hadoop的环境变量,Hadoop集群在启动的时候可以使用start-all.sh一次性启动集群中的HDFS和Yarn,为了能够正常使用该命令,需要将其路径配置到环境变量中。

hadoop@node1:~$ vi ~/.bashrc

export HADOOP_HOME=/home/hadoop/apps/hadoop-3.3.4
export HADOOP_CONF_DIR=/home/hadoop/apps/hadoop-3.3.4/etc/hadoop
export YARN_CONF_DIR=/home/hadoop/apps/hadoop-3.3.4/etc/hadoop

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

使环境变量生效。

hadoop@node1:~$ source ~/.bashrc

配置Hadoop集群

Hadoop软件安装完成后,每个节点上的Hadoop都是独立的软件,需要进行配置才能组成Hadoop集群。Hadoop的配置文件在$HADOOP_HOME/etc/hadoop目录下,主要配置文件有6个:

  • hadoop-env.sh主要配置Hadoop环境相关的信息,比如安装路径、配置文件路径等;
  • core-site.xml是Hadoop的核心配置文件,主要配置了Hadoop的NameNode的地址、Hadoop产生的文件目录等信息;
  • hdfs-site.xml是HDFS分布式文件系统相关的配置文件,主要配置了文件的副本数、HDFS文件系统在本地对应的目录等;
  • mapred-site.xml是关于MapReduce的配置文件,主要配置MapReduce在哪里运行;
  • yarn-site.xml是Yarn相关的配置文件,主要配置了Yarn的管理节点ResourceManager的地址、NodeManager获取数据的方式等;
  • workers是集群中节点列表的配置文件,只有在这个文件里面配置了的节点才会加入到Hadoop集群中,否则就是一个独立节点。

这几个配置文件如果不存在,可以通过复制配置模板的方式创建,也可以通过创建新文件的方式创建。需要保证在集群的每个节点上这6个配置保持同步,可以在每个节点单独配置,也可以在一个节点上配置完成后同步到其他节点。

hadoop-env.sh配置

hadoop@node1:~$ vi $HADOOP_HOME/etc/hadoop/hadoop-env.sh

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export HADOOP_HOME=/home/hadoop/apps/hadoop-3.3.4
export HADOOP_CONF_DIR=/home/hadoop/apps/hadoop-3.3.4/etc/hadoop
export HADOOP_LOG_DIR=/home/hadoop/logs/hadoop

core-site.xml配置

hadoop@node1:~$ vi $HADOOP_HOME/etc/hadoop/core-site.xml

<configuration>
    <property>
      <name>fs.defaultFS</name>
      <value>hdfs://node1</value>
    </property>
    <property>
      <name>hadoop.tmp.dir</name>
      <value>/home/hadoop/data/hadoop/temp</value>
    </property>
    <property>
      <name>ha.zookeeper.quorum</name> 
      <value>node1:2181,node2:2181,node3:2181</value>
      <final>false</final>
    </property>
    <property>
      <name>hadoop.proxyuser.hadoop.hosts</name>
      <value>*</value>
    </property>
    <property>
      <name>hadoop.proxyuser.hadoop.groups</name>
      <value>*</value>
    </property>
</configuration>

hdfs-site.xml配置

hadoop@node1:~$ vi $HADOOP_HOME/etc/hadoop/hdfs-site.xml

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
    <property>
      <name>dfs.namenode.name.dir</name>
      <value>/home/hadoop/data/hadoop/hdfs/name</value>
    </property>
    <property>
      <name>dfs.datanode.data.dir</name>
      <value>/home/hadoop/data/hadoop/hdfs/data</value>
    </property>
    <property>
      <name>dfs.nameservices</name>
      <value>wux_labs</value>
      <final>false</final>
    </property>
    <property>
      <name>dfs.ha.namenodes.wux_labs</name>
      <value>nn1,nn2</value>
      <final>false</final>
    </property>
    <property>
      <name>dfs.namenode.rpc-address.wux_labs.nn1</name>
      <value>node1:8020</value>
      <final>false</final>
    </property>
    <property>
      <name>dfs.namenode.rpc-address.wux_labs.nn2</name>
      <value>node2:8020</value>
      <final>false</final>
    </property>
    <property>
      <name>dfs.namenode.shared.edits.dir</name>
     <value>qjournal://node1:8485;node2:8485;node3:8485/wux_labs</value>
      <final>false</final>
    </property>
    <property>
      <name>dfs.ha.automatic-failover.enabled.wux_labs</name>
      <value>true</value>
      <final>false</final>
    </property>
    <property>
      <name>dfs.client.failover.proxy.provider.wux_labs</name>
      <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
      <final>false</final>
    </property>
    <property>
      <name>dfs.journalnode.edits.dir</name>
      <value>/home/hadoop/data/hadoop/journal</value>
      <final>false</final>
    </property>
    <property>
      <name>dfs.ha.fencing.methods</name>
      <value>sshfence</value>
      <final>false</final>
    </property>
    <property>
      <name>dfs.ha.fencing.ssh.private-key-files</name>
      <value>/root/.ssh/id_rsa</value>
    </property>
</configuration>

mapred-site.xml配置

hadoop@node1:~$ vi $HADOOP_HOME/etc/hadoop/mapred-site.xml

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <property>
        <name>mapreduce.application.classpath</name>
        <value>$HADOOP_HOME/share/hadoop/mapreduce/*:$HADOOP_HOME/share/hadoop/mapreduce/lib/*</value>
    </property>
</configuration>

yarn-site.xml配置

hadoop@node1:~$ vi $HADOOP_HOME/etc/hadoop/yarn-site.xml

<configuration>
    <property>
      <name>yarn.nodemanager.aux-services</name>
      <value>mapreduce_shuffle</value>
    </property>
    <property>
      <name>yarn.resourcemanager.ha.enabled</name>
      <value>true</value>
    </property>
    <property>
      <name>yarn.resourcemanager.cluster-id</name>
      <value>wux_labs_yarn</value>
    </property>
    <property>
      <name>yarn.resourcemanager.ha.rm-ids</name>
      <value>rm1,rm2</value>
    </property>
    <property>
      <name>yarn.resourcemanager.hostname.rm1</name>
      <value>node1</value>
    </property>
    <property>
      <name>yarn.resourcemanager.hostname.rm2</name>
      <value>node2</value>
    </property>
    
    <property>
      <name>yarn.resourcemanager.zk-address</name>
      <value>node1:2181,node2:2181,node3:2181</value>
    </property>
</configuration>

workers配置

hadoop@node1:~$ vi $HADOOP_HOME/etc/hadoop/workers

node3
node4
node5

将软件及配置信息复制到其他节点

在node1上配置好环境变量及配置文件,可以手动再在其他节点上完成同样的配置,或者直接将node1的文件复制到其他节点。

hadoop@node1:~$ scp -r .bashrc apps node2:~/
hadoop@node1:~$ scp -r .bashrc apps node3:~/
hadoop@node1:~$ scp -r .bashrc apps node4:~/
hadoop@node1:~$ scp -r .bashrc apps node5:~/

标签:00,必知,100%,hadoop,Hadoop,ssh,必会,node1
From: https://blog.51cto.com/u_15943369/6021953

相关文章

  • 大数据必知必会:Hadoop(1)单机环境安装
    (大数据必知必会:Hadoop(1)单机环境安装)安装前准备操作系统准备本次安装采用的操作系统是Ubuntu20.04。更新一下软件包列表。sudoapt-getupdate安装Java8+使用命......
  • MySQL必知必会第十四章-使用子查询
    使用子查询子查询查询(query)任何SQL语句都是查询。但此术语一般指SELECT语句。SQL还允许创建子查询(subquery),即嵌套在其他查询中的查询。利用子查询进行过滤SELECTcus......
  • 大数据必知必会:Zookeeper集群环境安装
    (大数据必知必会:Zookeeper集群环境安装)安装前准备集群环境下,至少需要3台服务器。IP地址主机名称10.0.0.5node110.0.0.6node210.0.0.7node3需要保......
  • 单机版hadoop搭建过程记录
    1、添加hadoop1用户组[root@localhost~]#groupaddhadoop12、添加hadoop1用户,并设置密码[root@localhost~]#useradd-ghadoop1hadoop1[root@localhost~]#passw......
  • MySQL必知必会第十三章-分组数据
    分组数据数据分组分组允许把数据分为多个逻辑组,以便能对每个组进行聚集计算。创建分组分组是在SELECT语句的GROUPBY子句中建立的:SELECTvend_id,COUNT(*)ASnum_pr......
  • MySQL必知必会第十二章-汇总数据
    汇总数据聚集函数聚集函数(aggregatefunction)运行在行组上,计算和返回单个值的函数。函数说明AVG()返回某列的平均值COUNT()返回某列的行数MAX()返......
  • 大数据相关认识,大数据、物联网和云计算之间的关系,hadoop简介
    大数据相关认识说道大数据,谷咕咕就很烦了,因为大学期间,做过爬虫,数据抓取,安装过Hadoop和hive,但是都不知道干嘛的,起码爬虫还知道,通过正则表达式将网页中的有效信息爬取下来。但......
  • MySQL必知必会第十一章-使用数据处理函数
    使用数据处理函数函数与其他大多数计算机语言一样,SQL支持利用函数来处理数据。函数一般是在数据上执行的,它给数据的转换和处理提供了方便。注意:函数没有SQL的可移植性......
  • ElasticSearch必知必会-进阶篇
    京东物流:康睿姚再毅李振刘斌王北永说明:以下全部均基于elasticsearch 8.1版本一.跨集群检索-ccr官网文档地址:​​​https://www.elastic.co/guide/en/elasticsearch/......
  • ElasticSearch必知必会-进阶篇
    京东物流:康睿姚再毅李振刘斌王北永说明:以下全部均基于elasticsearch8.1版本一.跨集群检索-ccr官网文档地址:https://www.elastic.co/guide/en/elasticsearch/re......