前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Hadoop的安装与配置——搭建完全分布式集群

Hadoop的安装与配置——搭建完全分布式集群

作者头像
栗筝i
发布2022-12-01 08:51:52
4750
发布2022-12-01 08:51:52
举报
文章被收录于专栏:迁移内容迁移内容

一、搭建集群

1、准备服务器(这里以我的3台Centos7为例)

  • 1个主节点:Carlota1(192.168.33.21),
  • 2个子节点:Carlota2(192.168.33.22),Carlota3(192.168.33.23)

2、配置主节点名

在主节点命令行输入: vi /etc/sysconfig/network 添加内容:

代码语言:javascript
复制
NETWORKING=yes
HOSTNAME=Carlota1

3、配置两台子节点名

分别在子节点命令行输入: vi /etc/sysconfig/network 添加内容:

代码语言:javascript
复制
NETWORKING=yes
HOSTNAME=Carlota2
代码语言:javascript
复制
NETWORKING=yes
HOSTNAME=Carlota3

4、配置hosts

打开主节点的hosts文件,注释掉 将文件的前两行(当前主机的信息),并在文件中添加所有hadoop集群的主机信息。

在命令行输入: vi /etc/hosts ,添加3台服务器的节点名信息:

代码语言:javascript
复制
192.168.33.21	Carlota1
192.168.33.22	Carlota2
192.168.33.23	Carlota3

保存之后,分别将主节点的hosts分别拷贝到其他两个子节点:

  • scp /etc/hosts root@192.168.33.22:/etc/
  • scp /etc/hosts root@192.168.33.23:/etc/

分别执行 /bin/hostname hostsname 使更改生效,(例如:Carlota1上执行 /bin/hostsname Carlota1,使之生效。)(重启可以代替/bin/hostname hostsname命令)

5、关闭防火墙

  1. 查看防火墙状态 :firewall-cmd --state
  2. 停止firewall :systemctl stop firewalld.service
  3. 禁止firewall开机启动:systemctl disable firewalld.service

6、配置ssh无密码访问(使每个节点上的/root/.ssh/authorized_keys文件中都包含所有的节点生成的公钥内容)

  • 生成公钥密钥对:在每个节点上分别执行命令行输入:ssh-keygen -t rsa , 一直按回车或Yes直到生成结束(执行结束之后每个节点上的/root/.ssh/目录下生成了两个文件 id_rsa 和 id_rsa.pub其中前者为私钥,后者为公钥)
  • 在主节点上执行命令行输入:cp id_rsa.pub authorized_keys
  • 将两个子节点的公钥拷贝到主节点上,分别在两个子节点上执行:
代码语言:javascript
复制
scp /root/.ssh/id_rsa.pub root@Carlota1:/root/.ssh/id_rsa_Carlota2.pub
scp /root/.ssh/id_rsa.pub root@Carlota1:/root/.ssh/id_rsa_Carlota3.pub
  • 在主节点上,将拷贝过来的两个公钥合并到authorized_keys文件中
代码语言:javascript
复制
cat id_rsa_Carlota2.pub>> authorized_keys
cat id_rsa_Carlota3.pub>> authorized_keys
  • 将主节点的authorized_keys文件分别替换子节点的authorized_keys文件
代码语言:javascript
复制
scp authorized_keys root@Carlota2:/root/.ssh/
scp authorized_keys root@Carlota3:/root/.ssh/
  • 最后测试是否配置成功:在Carlota1上分别执行,ssh Carlota2,ssh Carlota3 能正确跳转到两台子节点的操作界面即可

二、Hadoop集群配置

7、准备工作 下载好相应的Hadoop与JDK版本

在这里插入图片描述
在这里插入图片描述

8、分别上传JDK与Hadoop的tar.gz文件到三台服务器 这里使用windows下的文件传输软件进行上传(其中我这里上传路径分别为/usr/local/java/和/usr/local/apps/)

在这里插入图片描述
在这里插入图片描述

9、安装配置JAVA

  • tar -zxvf jdk-8u251-linux-x64.tar.gz
  • mv jdk1.8.0_251 jdk1.8

配置环境变量vi /etc/profile 添加以下内容

代码语言:javascript
复制
#JAVA
export JAVA_HOME=/usr/local/java/jdk1.8
export JRE_HOME=$JAVA_HOME/jre
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib
  • source /etc/profile

测试是否安装成功:java -version

在这里插入图片描述
在这里插入图片描述

10、安装hadoop

  • tar -zxvf hadoop-3.2.1.tar.gz

配置环境变量vi /etc/profile 添加以下内容

代码语言:javascript
复制
#Hadoop
export HADOOP_HOME=/usr/local/apps/hadoop-3.2.1
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
  • source /etc/profile

11、配置Hadoop /sbin下 将start-dfs.sh,stop-dfs.sh两个文件顶部添加以下参数

代码语言:javascript
复制
#!/usr/bin/env bash
HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs  
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

start-yarn.sh,stop-yarn.sh顶部也需添加以下参数:

代码语言:javascript
复制
#!/usr/bin/env bash
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

12、配置Hadoop /etc下 需要修改的有以下几个文件:

  • hadoop-env.sh
  • yarn-env.sh
  • core-site.xml
  • hdfs-site.xml
  • mapred-site.xml
  • yarn-site.xml
  • workers (Hadoop3.0以前的版本叫做slaves)

(1)、hadoop-env.sh和yarn-env.sh 分别添加JAVA_HOME路径到hadoop-env.sh和yarn-env.sh中

代码语言:javascript
复制
export JAVA_HOME=/usr/local/java/jdk1.8

(2)、core-site.xml 添加如下代码

代码语言:javascript
复制
<configuration>
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://Carlota1:9000</value>
        </property>
        <property>
                <name>io.file.buffer.size</name>
                <value>131072</value>
        </property>
        <property>
                <name>hadoop.tmp.dir</name>
                <value>file:/usr/temp</value>
        </property>
        <property>
                <name>hadoop.proxyuser.root.hosts</name>
                <value>*</value>
        </property>
        <property>
                <name>hadoop.proxyuser.root.groups</name>
                <value>*</value>
        </property>
</configuration>

其中/usr/temp文件夹需要新建! (3)、hdfs-site.xml 添加如下代码:

代码语言:javascript
复制
<configuration>
        <property>
                <name>dfs.namenode.secondary.http-address</name>
                <value>Carlota1:9001</value>
        </property>
        <property>
                <name>dfs.namenode.name.dir</name>
                <value>file:/usr/dfs/name</value>
        </property>
        <property>
                <name>dfs.datanode.data.dir</name>
                <value>file:/usr/dfs/data</value>
        </property>
        <property>
                <name>dfs.replication</name>
                <value>2</value>
        </property>
        <property>
                <name>dfs.webhdfs.enabled</name>
                <value>true</value>
        </property>
        <property>
                <name>dfs.permissions</name>
                <value>false</value>
        </property>
        <property>
                <name>dfs.web.ugi</name>
                <value>supergroup</value>
        </property>
</configuration>

其中/usr/dfs/name与/usr/dfs/data文件夹需要新建!

(4)、mapred-site.xml(没有mapred-site.xml文件可以将mapred-site.xml.template进行重命名为mapred-site.xml)

代码语言:javascript
复制
<configuration>
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>
        <property>
                <name>mapreduce.jobhistory.address</name>
                <value>Carlota1:10020</value>
        </property>
        <property>
                <name>mapreduce.jobhistory.webapp.address</name>
                <value>Carlota1:19888</value>
        </property>
</configuration>

(5)、yarn-site.xml 添加如下代码:

代码语言:javascript
复制
<configuration>
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>
        <property>
                <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
                <value>org.apache.hadoop.mapred.ShuffleHandler</value>
        </property>
        <property>
                <name>yarn.resourcemanager.address</name>
                <value>Carlota1:8032</value>
        </property>
        <property>
                <name>yarn.resourcemanager.scheduler.address</name>
                <value>Carlota1:8030</value>
        </property>
        <property>
                <name>yarn.resourcemanager.resource-tracker.address</name>
                <value>Carlota1:8031</value>
        </property>
        <property>
                <name>yarn.resourcemanager.admin.address</name>
                <value>Carlota1:8033</value>
        </property>
        <property>
                <name>yarn.resourcemanager.webapp.address</name>
                <value>Carlota1:8088</value>
        </property>
</configuration>

(6)、workers 将原内容修改为

代码语言:javascript
复制
Carlota2
Carlota3

拷贝hadoop安装文件到子节点

代码语言:javascript
复制
scp -r etc/hadoop  root@Carlota2:/usr/local/apps/hadoop-3.2.1/etc
scp -r etc/hadoop  root@Carlota3:/usr/local/apps/hadoop-3.2.1/etc

13、启动Hadoop集群

  • 格式化主节点的namenode:./bin/hdfs namenode -format
  • 主节点上在hadoop目录下执行:./sbin/start-all.sh

主节点上jps进程如下:

在这里插入图片描述
在这里插入图片描述

子节点上jps进程如下:

在这里插入图片描述
在这里插入图片描述

hadoop集群配置成功!!!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-07-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、搭建集群
  • 二、Hadoop集群配置
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档