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

Hadoop完全分布式搭建

作者头像
h3110_w0r1d
发布2024-02-19 20:13:02
2260
发布2024-02-19 20:13:02
举报
文章被收录于专栏:用户9703952的专栏

Hadoop完全分布式搭建

集群部署规划

*Master*

*Slave1*

*Slave2*

IP

192.168.1.10

192.168.1.1

192.168.1.2

HDFS

NameNodeSecondaryNameNode

DataNode

DataNode

YARN

ResourceManager

NodeManager

NodeManager

生成master虚拟机

代码语言:javascript
复制
从最原始的origin主机(关机状态)复制一台虚拟机,虚拟机名为master。
origin主机相关信息如下:
内存:2G
硬盘:30G 
OS:ubuntu(64位)
共享设置完成
root用户登录
ifconfig和vim安装完成vim
创建了下面两个文件夹
/root/downloads 文件夹里存放安装包
/root/bigdata 文件夹里存放安装文件(即解压缩后的文件)
防火墙关闭:sudo ufw disable

修改master的网卡、虚拟机名、IP地址和主机名

代码语言:javascript
复制
(1)master关机状态下修改网卡,参见课本P82,其中P82的图4.7中的网卡2选择“网络地址转换(NAT)”;
master关机状态下修改虚拟机名,参见课本P83
(2)master开机状态下修改IP地址和主机名,IP等信息见上表,操作步骤可参见课本P84-85
修改IP地址:
root@hadoop:~# vim /etc/network/interfaces
添加以下内容:
auto enp0s3
iface enp0s3 inet static
address  192.168.1.10
netmask  255.255.255.0
broadcast 192.168.1.255
重启网络:
root@hadoop:~# /etc/init.d/networking restart

修改主机名:
root@hadoop:~# vim /etc/hostname
将原来内容删除,改为master.

(3)重启reboot

配置/etc/hosts

代码语言:javascript
复制
root@master:~# vim /etc/hosts
192.168.1.10  master
192.168.1.1  slave1
192.168.1.2  slave2

配置**SSH**免密登录****

代码语言:javascript
复制
(1)安装SSH
root@ master:~/bigdata# apt-get install ssh
(2)设置免密登录
1)生成公钥和密钥对
root@ master:~/bigdata# ssh-keygen -t rsa
一路回车(三个)即可。
2)查看生成的公钥和私钥。
root@ master:~/bigdata# ll ~/.ssh
3)将密钥加入到公钥中

root@master:~/bigdata# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

复制master产生slave1和slave2并进行配置

代码语言:javascript
复制
1)将master关机再复制!!!
(2)slave1开机,修改IP地址(192.168.1.1)和主机名
修改IP地址:
root@ master:~# vim /etc/network/interfaces

重启网络:
root@ master:~# /etc/init.d/networking restart

修改主机名:
root@ master:~# vim /etc/hostname

重启slave1,reboot

(3)slave2开机,修改IP地址(192.168.1.2)和主机名; 
(4)重启slave2

设置master到master、slave1和slave2的SSH免密登录

代码语言:javascript
复制
(1)启动三个节点
(2)在master节点连接到master节点
  root@master:~# ssh master
  exit退出
(3)在master节点连接到slave1节点
  root@master:~# ssh slave1
  exit退出
(4)在master节点连接到slave2节点
  root@master:~# ssh slave2
exit退出

安装JDK

*通过共享文件夹的方式将j**d**k的安装包放在ma**ster**节点的/**root/downloads**文件夹下*

*解压J**DK* *到* */root/bigdata**目录下*

``` root@master:/media/sf_virtualbox-share# cp jdk-8u191-linux-x64.tar.gz /root/downloads root@master:/media/sf_virtualbox-share# cd /root/downloads root@master:/downloads# tar -zxvf jdk-8u191-linux-x64.tar.gz -C /root/bigdata/ (这里的C必须大写) 回到/root/bigdata目录下查看: root@ master:/downloads# cd /root/bigdata/ root@ master:~/bigdata#

代码语言:javascript
复制
4.   ![](https://strongwillpro.oss-cn-beijing.aliyuncs.com/img/20220928195423.png)

5.   将解压后的jdk1.8.0_191文件包复制到slave1和slave2

6.   ```
     root@master:~/bigdata# scp -r /root/bigdata/jdk1.8.0_191/ root@slave1:/root/bigdata/
     root@master:~/bigdata# scp -r /root/bigdata/jdk1.8.0_191/ root@slave2:/root/bigdata/

配置JDK环境变量

在 /etc/profile 里配置JDK的环境变量。打开该文件:

``` root@ master:~/bigdata# vim /etc/profile // /etc/profile这个文件是用来存放环境变量的

代码语言:javascript
复制
3.   shift+g到文件末尾,按i进入插入状态,加入JDK路径:

4.   ```
     # JAVA_HOME
     export JAVA_HOME=/root/bigdata/jdk1.8.0_191
     export  PATH=$PATH:$JAVA_HOME/bin
     export JRE_HOME=${JAVA_HOME}/jre
     export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib

将配置文件复制到slave1和slave2

``` root@master:# scp -r /etc/profile root@slave1:/etc/ root@master:# scp -r /etc/profile root@slave2:/etc/

代码语言:javascript
复制
8.   使修改后的文件生效(三个节点都要做)

9.   ```
     root@master:~#  source /etc/profile
     root@slave1:~#  source /etc/profile
     root@slave2:~#  source /etc/profile

安装Hadoop

通过共享文件夹的方式将hadoop的安装包放在master节点的/root/downloads文件夹下

解压hadoop到/root/bigdata目录下

``` root@master:/media/sf_virtualbox-share# cp hadoop-3.1.1.tar.gz /root/downloads root@master:/media/sf_virtualbox-share# cd /root/downloads

root@master:~/downloads# tar -zxvf hadoop-3.1.1.tar.gz -C /root/bigdata/ (这里的C必须大写)

代码语言:javascript
复制
4.   将解压后的hadoop文件包复制到slave1和slave2(解压后的文件放到/bigdata中,没解压的压缩包放到/downloads)

5.   配置Hadoop环境变量

6.   在/etc/profile文件中配置JDK的环境变量

7.   ```
     vim /etc/profile

在文件的末尾加入hadoop路径

```

HADOOP_HOME

export HADOOP_HOME=/root/bigdata/hadoop-3.1.1 export PATH=PATH:HADOOP_HOME/bin export PATH=PATH:HADOOP_HOME/sbin export HADOOP_MAPRED_HOME=HADOOP_HOME export HADOOP_COMMON_HOME=HADOOP_HOME export HADOOP_HDFS_HOME=HADOOP_HOME export YARN_HOME=HADOOP_HOME export HADOOP_COMMON_LIB_NATIVE_DIR=HADOOP_HOME/lib/native export HADOOP_OPTS=”-Djava.library.path=HADOOP_HOME/lib:HADOOP_COMMON_LIB_NATIVE_DIR” export JAVA_LIBRARY_PATH=HADOOP_HOME/lib/native:

代码语言:javascript
复制
11.   保存文件并退出,将配置文件scp到slave1和slave2

12.   ```
      root@master:~# scp -r /etc/profile root@slave1:/etc/
      root@master:~# scp -r /etc/profile root@slave2:/etc/

④ 使修改后的文件生效(三个节点都 做):

``` root@master:# source /etc/profile root@slave1:# source /etc/profile root@slave2:~# source /etc/profile

代码语言:javascript
复制
15.   查看hadoop是否安装成功,在任意路径下输入以下命令来查看hadoop版本

16.   ```
      hadoop version //注意,这个地方没有-

配置hadoop配置文件(在master节点)

在/root/bigdata/hadoop-3.1.1/etc/hadoop/ 目录下找到所有的配置文件并修改

``` root@master:~# cd /root/bigdata/hadoop-3.1.1/etc/hadoop/

代码语言:javascript
复制
3.   创建相关需要的文件夹(三个节点都创建)

4.   ```
     root@master:~/bigdata/hadoop-3.1.1# mkdir datanode_1_dir
     root@master:~/bigdata/hadoop-3.1.1# mkdir -p hadoop_data/hdfs/namenode
     root@master:~/bigdata/hadoop-3.1.1# mkdir -p hadoop_data/hdfs/datanode

hadoop-env.sh

``` root@master:~/bigdata/hadoop-3.1.1/etc/hadoop# vim hadoop-env.sh 去掉export JAVA_HOME的注释并修改路径:

代码语言:javascript
复制
   export JAVA_HOME=/root/bigdata/jdk1.8.0_191

再添加以下代码: export HDFS_NAMENODE_USER=root export HDFS_DATANODE_USER=root export HDFS_SECONDARYNAMENODE_USER=root export YARN_RESOURCEMANAGER_USER=root export YARN_NODEMANAGER_USER=root

代码语言:javascript
复制
9.   配置core-site.xml

10.   ```xml
      <configuration>
         <!-- 配置NameNode节点的地址和端口号 -->
         <property>
             <name>fs.defaultFS</name>
             <value>hdfs://master:9000</value>
         </property>
      
         <!-- hadoop的临时目录,用来存放hadoop运行时产生的临时文件  -->
         <property>
              <name>hadoop.tmp.dir</name>
              <value>/root/bigdata/hadoop-3.1.1/datanode_1_dir</value>
         </property>   
      </configuration>

配置yarn-site.xml

```xml

yarn.nodemanager.aux-services mapreduce_shuffle yarn.resourcemanager.hostname master yarn.application.classpath /root/bigdata/hadoop-3.1.1/etc/hadoop:/root/bigdata/hadoop-3.1.1/share/hadoop/common/lib/*:/root/bigdata/hadoop-3.1.1/share/hadoop/common/*:/root/bigdata/hadoop-3.1.1/share/hadoop/hdfs:/root/bigdata/hadoop-3.1.1/share/hadoop/hdfs/lib/*:/root/bigdata/hadoop-3.1.1/share/hadoop/hdfs/*:/root/bigdata/hadoop-3.1.1/share/hadoop/mapreduce/lib/*:/root/bigdata/hadoop-3.1.1/share/hadoop/mapreduce/*:/root/bigdata/hadoop-3.1.1/share/hadoop/yarn:/root/bigdata/hadoop-3.1.1/share/hadoop/yarn/lib/*:/root/bigdata/hadoop-3.1.1/share/hadoop/yarn/*

代码语言:javascript
复制
  <property>
          <name>yarn.nodemanager.vmem-check-enabled</name>
          <value>false</value>
  </property>
代码语言:javascript
复制
13.   配置mapred-site.xml

14.   ```xml
      <configuration>
      <!-- 指定MR运行在YARN上 ,取值可为local,classic,yarn之一 -->
      <property>
      	<name>mapreduce.framework.name</name>
      	        <value>yarn</value>
      </property>
      
        <property>
              <name>mapred.job.tracker</name>
              <value>master:54311</value>
         </property>
      </configuration>

配置hdfs-site.xml

```xml

dfs.replication 2 dfs.namenode.name.dir file:///root/bigdata/hadoop-3.1.1/hadoop_data/hdfs/namenode dfs.datanode.data.dir file:///root/bigdata/hadoop-3.1.1/hadoop_data/hdfs/datanode dfs.http.address master:50070 dfs.namenode.secondary.http-address master:9870

代码语言:javascript
复制
17.   配置master文件,这是一个新建文件,将主节点 master 写入进去,以指明哪个节点是NameNode

18.   配置workers,指明哪些是DataNode

19.   ```
      root@master:~/bigdata/hadoop-3.1.1/etc/hadoop# vim workers
      将所有的DataNode节点的主机名写进去,一个占一行。
      slave1
      slave2

将hadoop相关配置复制到slave1和slave2上

``` scp -r /root/bigdata/hadoop-3.1.1/etc/hadoop/ root@slave1:/root/bigdata/hadoop-3.1.1/etc/ scp -r /root/bigdata/hadoop-3.1.1/etc/hadoop/ root@slave2:/root/bigdata/hadoop-3.1.1/etc/

代码语言:javascript
复制
## 在master上格式化Namenode

1.   ```
     root@master:~/bigdata/hadoop-3.1.1/bin# hdfs namenode -format

注:在格式化之前,首先要查看是否有一些临时文件夹,如果有(一般是之前格式化产生的),需要删除。这些临时文件有:

*/root/ bigdata/hadoop-3.1.1/**datanode_1_dir* *里面的全部内容*

*/root/ bigdata/hadoop-3.1.1/**log**s* *整个l**ogs**文件夹*

*/root/ bigdata/hadoop-3.1.1/**h**adoop_data/hdfs**/**namenode* *里面的全部内容*

*/root/ bigdata/hadoop-3.1.1/**h**adoop_data/hdfs**/**datanode* *里面的全部内容*

将这四项删除,再格式化,否则datanode可能不显示。

在可视化的方式下删除,找到,直接DELETE键删除即可。三个节点都删除。

web端查看HDFS文件系统和YARN

查看hdfs,在Ubuntu内的火狐浏览器的地址栏中输入

``` http://master:50070

代码语言:javascript
复制
3.   ![](https://strongwillpro.oss-cn-beijing.aliyuncs.com/img/20220929174609.png)

4.   查看yarn,在浏览器中输入

5.   ```
     http://master:8088/

在hadoop集群中运行程序

master中进入到下面的目录

``` root@master:~/bigdata/hadoop-3.1.1/share/hadoop/mapreduce#

代码语言:javascript
复制
3.   执行程序

4.   ```
     root@master:~/bigdata/hadoop-3.1.1/share/hadoop/mapreduce# hadoop jar ./hadoop-mapreduce-examples-3.1.1.jar pi 10 10
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-09-28,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Hadoop完全分布式搭建
    • 集群部署规划
      • 生成master虚拟机
        • 修改master的网卡、虚拟机名、IP地址和主机名
          • 配置/etc/hosts
            • 配置**SSH**免密登录****
              • 复制master产生slave1和slave2并进行配置
                • 设置master到master、slave1和slave2的SSH免密登录
                  • 安装JDK
                    • 配置JDK环境变量
                      • 安装Hadoop
                      • HADOOP_HOME
                        • 配置hadoop配置文件(在master节点)
                          • web端查看HDFS文件系统和YARN
                            • 在hadoop集群中运行程序
                            领券
                            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档