IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> hadoop三种模式搭建安装-vbox-openEuler、centos -> 正文阅读

[大数据]hadoop三种模式搭建安装-vbox-openEuler、centos

目录

Hadoop2.8 单机模式安装

1 Hadoop安装模式概述

2 软件准备

3 Hadoop2.8单机模式安装过程

Task 1 安装JDK

Task 2 安装Hadoop

4 安装总结

资源参考

Hadoop2.8 伪分布模式安装

1 Hadoop2.8伪分布模式安装过程

Task 1 节点准备

Task 2 HDFS安装配置

Task 3 YARN安装配置

2 安装总结

3 附录

Hadoop2.8 完全分布式安装

1 安装概述

2 节点规划

3 节点准备

Step 1 准备虚拟机

Step 2 配置SSH免密

Step 3 准备JDK

4 Hadoop集群安装

Step 1 在单节点上安装配置Hadoop

Step 2 分发Hadoop

Step 3 格式化namenode

Step 4 验证Hadoop

5 附录

5.1 其他参考

5.2 FAQ


关闭集群:[root@vm01-openEuler package]# shutdown -h now

首先复制生成四台机器1个namenode,2个DataNode(完全分布式),1个kerberos kdc

注意在完成第一台节点的安装后进行复制,而不是环境搭建完在复制。

?

?由于剩余三台机器都是由第一台复制出来的,所以主机名、密码以及IP地址都是相同的,在这里我们逐个修改。

登录进去后:vi /etc/hostname

修改四个节点的主机名,为了后续方便,在这里我将vm01、vm02、vm03更改为hadoop01、hadoop02、hadoop03。

修改网关:

cd /etc/sysconfig/network-scripts/
vi ifcfg-enp0s3

?这里我将hadoop01网关设置为192.168.56.210;hadoop02:192.168.56.220;hadoop03:192.168.56.230;kerberos:192.168.56.240

然后对四台机器进行重启:reboot

结果展示如下:

hadoop01:

?hadoop02:

hadoop03:

?kerberos:

Hadoop2.8 单机模式安装

1 Hadoop安装模式概述

Hadoop的三种安装模式:

1.单机模式【本地模式Local (Standalone) Mode】

  • 单机模式是Hadoop的默认模式

  • Hadoop所有组件(NameNode,DataNode...)都运行在同一个Java进程中

  • 采用比较保守的最小配置,配置文件也通常为空

  • Hadoop完全运行在本地,不需要与其他节点交互(因此,单机模式不需要配置SSH免密码登陆)

  • 单机模式不会使用HDFS,也不会加载任何Hadoop的守护进程

  • 该模式主要用于开发调试MapReduce程序的应用逻辑

2.伪分布式模式【Pseudo-Distributed Mode,英 ['sju?d??]美 ['su?do?]】

  • 伪分布模式是在一台机器上模拟一个完整功能的微型集群

  • 各个组件都拥有一个单独的Java虚拟机,它们之间通过网络套接字通讯

  • 从伪分布模式开始(也就是包括完全分布式模式在内),需要配置SSH免密码登陆

  • Hadoop在伪分布模式下的操作和完全分布式相同,因此可用于学习和开发的目的

?3.完全分布式模式【Fully-Distributed Mode】

  • Hadoop的正常安装方式

  • Hadoop分布在多台主机上,建立Hadoop集群

2 软件准备

  1. 操作系统:

    virtual Box+openEuler20.03LTS

  2. JDK 1.8

    JDK1.8(1.7以上,64位,linux版本) 下载链接:Java Downloads | Oracle

  3. Hadoop 2.8.5 下载链接:Apache Download Mirrors

  4. SSH工具

    MobaXterm

3 Hadoop2.8单机模式安装过程

Task 1 安装JDK

Step 1 使用ssh工具连接到虚拟机

虚拟机ip:192.168.56.200

Step 2 上传JDK到用户home目录

将下载好的linux版本的jdk通过MobaXterm工具拖放到用户home目录下的package,新建package文件夹,此处root的home目录是/root,即root/package:

Step 3 解压jdk

 tar zxvf jdk-8u241-linux-x64.tar.gz

解压完成:

Step 4 将JDK移到安装位置

 mv jdk1.8.0_241/ /usr/local/

移到完成:

Step 5 配置环境变量

 vi /etc/profile

在文件结尾处添加:

export JAVA_HOME=/usr/local/jdk1.8.0_241
export PATH=$JAVA_HOME/bin:$PATH

运行结果:

保存退出。

Step 6 使配置生效,并验证jdk

source /etc/profile
java -version

运行结果:

Task 2 安装Hadoop

Step 1 上传hadoop安装包至/root/package目录

通过MobaXterm工具将下载的hadoop安装包拖放至用户/root/package目录:

Step 2 解压hadoop安装包

tar zxvf hadoop-2.8.5.tar.gz

运行结果:

Step 3 将hadoop移到安装位置

 mv hadoop-2.8.5 /opt

?运行结果:

注意:

Linux?的软件安装目录是也是有讲究的,理解这一点,在对系统管理是有益的

/usr:系统级的目录,可以理解为C:/Windows//usr/lib理解为C:/Windows/System32
/usr/local:用户级的程序目录,可以理解为C:/Progrem Files/。用户自己编译的软件默认会安装到这个目录下。
/opt:用户级的程序目录,可以理解为D:/Software,opt有可选的意思,这里可以用于放置第三方大型软件(或游戏),当你不需要时,直接rm -rf掉即可。在硬盘容量不够时,也可将/opt单独挂载到其他磁盘上使用。

源码放哪里?
/usr/src:系统级的源码目录。
/usr/local/src:用户级的源码目录。

Step 4 设置hadoop环境变量

vi /etc/profile

将Hadoop可执行文件添加到PATH变量中(可执行文件分别位于bin和sbin下),在profile文件结尾添加如下内容:

export HADOOP_HOME=/opt/hadoop-2.8.5
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

运行结果:

保存退出。

Step 5 使环境变量生效

source /etc/profile

Step 6 设置Hadoop使用的JDK

hadoop配置文件通常位于hadoop安装目录的etc/hadoop下面:

编辑hadoop-env.sh文件:

vi /opt/hadoop-2.8.5/etc/hadoop/hadoop-env.sh

修改JAVA_HOME一行:

将其替换为实际的java安装位置:

JAVA_HOME=/usr/local/jdk1.8.0_241

修改后文件:

保存退出。

Note:

  • 这里要设置成实际使用的JDK位置,而不是系统环境变量中的JAVA_HOME,以免系统中有多个JDK存在时,Hadoop用错JDK

  • 如果你忘记了Java的安装位置可以通过如下命令查看

    echo $JAVA_HOME

    或者:

    which javac

Step 7 验证Hadoop安装

1)使用hadoop可以查看帮助:

2)查看Hadoop版本

hadoop version

运行结果:

3)单词统计测试

$ mkdir input
?
$ cp /opt/hadoop-2.8.5/etc/hadoop/*.xml input
hadoop jar /opt/hadoop-2.8.5/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.5.jar wordcount input output
?

运行过程:

?$ cat output/*

单词统计结果:

Note:

如果出现如下警告:

WARN io.ReadaheadPool: Failed readahead on ifile EBADF: Bad file descriptor

表示在预读取文件时出现文件关闭错误,不用理会。??

?测试完成后切换到root目录,进行删除input和output文件夹

[root@hadoop01 ~]# rm -rf input/
[root@hadoop01 ~]# rm -rf output/

4 安装总结

  • 本地模式只有一个Java进程(使用jps查看时看不到hadoop进程)

  • 本地模式只是为了调试,不会使用hdfs,因此不需要格式化namenode节点,不要使用start-all start-dfs等启动,启动后也没有hdfs相关节点。

  • 本地模式不需要配置免密登陆

  • 本地模式不用理会防火墙

资源参考

单点模式安装:Apache Hadoop 2.10.1 – Hadoop: Setting up a Single Node Cluster.

Hadoop2.8 伪分布模式安装

1 Hadoop2.8伪分布模式安装过程

在前面完成hadoop单点模式安装的基础上进行下面的安装过程。

Task 1 节点准备

Step 1 关闭防火墙

执行如下命令关闭防火墙:

systemctl stop firewalld
systemctl disable firewalld

Step 2 配置ssh免密

如果输入如下命令:

ssh localhost

出现类似下面询问密码的情形,那么我们需要配置免密登陆ssh。

1)生成公钥和私钥

ssh-keygen -t rsa

一路回车即可:

?

生成的公钥和私钥文件保存在当前用户home目录的.ssh目录下:

其中id_rsa为私钥,id_rsa.pub为公钥。

2)将公钥添加到ssh授信列表文件中

运行如下命令:

cat /root/.ssh/id_rsa.pub  >> /root/.ssh/authorized_keys

新创建的authorized_keys文件和下面类似:

3)验证ssh免密配置是否成功:

再次执行如下命令:

ssh localhost

执行效果如下,已经不再需要输入密码。

Note:

如果不配置ssh免密,或者免密配置不成功,则在启动hadoop时,启动进程会停下来要求你输入密码,如果不输入密码或者不正确则无法正常启动相应组件。

Task 2 HDFS安装配置

Step 1 配置HDFS

hadoop配置文件位于hadoop安装目录的etc/hadoop下:

1)配置core-site.xml文件:

使用vi编辑core-site.xml文件:

 vi /opt/hadoop-2.8.5/etc/hadoop/core-site.xml

在文件中的添加如下内容:

<configuration>
 ? ?<property>
 ? ? ? ?<name>fs.defaultFS</name>
 ? ? ? ?<value>hdfs://localhost:9000</value>
 ? ?</property>
 ? ?<property>
 ?      <name>hadoop.tmp.dir</name>
 ?      <value>/opt/hadoop-2.8.5/tmp</value>
    </property>
</configuration>

?修改后的文件如下:

Note:

configuration标签已存在,只需要添加property标签中的内容,此处使用的端口号是9000

9000端口用于客户端与集群NameNode节点进行rpc通讯,以前默认使用8020端口,现在8020端口被独立出来仅用于DataNode与NameNode的心跳通讯,具体的hadoop常用端口可以参考附录部分。

注意,一定要配置hadoop的tmp目录,不要使用默认配置,hadoop官方安装文档使用默认配置,会在每次重新启动服务器时,tmp目录会被linux自动删除,这样将导致hadoop文件系统丢失,这样你又需要重新格式化hdfs,而以前的hdfs保存的文件也将丢失。

2)配置hdfs-site.xml文件

用vi编辑hdfs-site.xml文件:

 vi /opt/hadoop-2.8.5/etc/hadoop/hdfs-site.xml

添加如下内容:

<configuration>
 ? ?<property>
 ? ? ? ?<name>dfs.replication</name>
 ? ? ? ?<value>1</value>
 ? ?</property>
</configuration>

最终文件如下:

Note:

configuration标签已存在,只需要添加property标签中的内容

对于伪分布模式,复制因子是1,切记!

Step 2 格式化HDFS系统

运行如下命令:

hdfs namenode -format

出现如下信息,表示hdfs格式化成功:

注意:根据前面core-site.xml文件中的配置,hdfs系统位于/opt/hadoop安装目录/tmp目录下。

Step 3 启动HDFS

通过以下命令启动NameNode和DataNode进程:

start-dfs.sh

运行结果:

Note:

Hadoop进程启动日志默认位于Hadoop安装目录的logs文件夹下

start-dfs.sh启动脚本在hadoop安装目录的sbin目录下。

通过jps可以查看hadoop启动后的java进程,如果包含SecondaryNameNode、DataNode和NameNode3个进程表示启动成功,其中SecondaryNameNode又叫检查节点。如果进程没有完全启动,请查看hadoop启动日志。

?

Step 4 验证hdfs系统

1)可以通过浏览器访问NameNode的web界面:

http://192.168.56.210:50070

Note:?

在Hadoop3.x中NameNode的web界面端口改为9870

注意,此处ip为虚拟机上安装hadoop伪分布机器的ip。如果该页面无法访问,需要注意防火墙关闭步骤是否漏掉,执行如下命令重新关闭防火墙:

关闭防火墙
systemctl stop firewalld
开机禁用防火墙
systemctl disable firewalld

关闭防火墙执行效果: ?

2)验证MapReduce功能

1.在hdfs上创建文件夹:

hdfs dfs -mkdir /user
hdfs dfs -mkdir /user/root

执行效果:

2.上传统计文件到hdfs

hdfs dfs -put /opt/hadoop-2.8.5/etc/hadoop/ input

执行效果:

Note:?

默认情况下hdfs dfs -put命令会使用hdfs文件系统下的【/user/当前用户名】作为当前目录,因此如果使用相对路径要事先建立[/user/当前用户名]文件夹,否则在使用相对路径时会提示路径没有建立。

3.执行单词统计

hadoop jar /opt/hadoop-2.8.5/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.5.jar wordcount input output

执行效果:

4.查看统计结果:

[root@hadoop01 ~]# hdfs dfs -get output output
[root@hadoop01 ~]# cat output/*

输出结果:

Note:

如果当前目录下存在output目录,需要事先删除。?

测试完成后删除目录及结果:

[root@hadoop01 ~]# hdfs dfs -rm -r /user
?[root@hadoop01 ~]# rm -rf output/

?5.如需停止hdfs可以使用脚本:stop-dfs.sh

Task 3 YARN安装配置

前面在验证hadoop安装时所运行的mapreduce任务是基于本地运行,没有YARN参与,通常情况下,我们需要在YARN调度下运行MapReduce,此时我们需要额外配置ResourceManager和NodeManager进程。

YARN在伪分布模式的安装过程如下:

Step 1 配置YARN

1)配置mapred-site.xml文件

1.复制出mapred-site.xml文件

cp /opt/hadoop-2.8.5/etc/hadoop/mapred-site.xml.template /opt/hadoop-2.8.5/etc/hadoop/mapred-site.xml

2.使用vi添加如下内容:

 vi /opt/hadoop-2.8.5/etc/hadoop/mapred-site.xml

注意仅添加property标签部分:

<configuration>
 ?  <property>
 ? ? ?  <name>mapreduce.framework.name</name>
 ? ? ?  <value>yarn</value>
 ?  </property>
</configuration>

最终文件和如下类似:

2)配置yarn-site.xml文件

使用vi编辑yarn-site.xml文件:

 vi /opt/hadoop-2.8.5/etc/hadoop/yarn-site.xml

添加如下内容:

<configuration>
 ?  <property>
 ? ? ?  <name>yarn.nodemanager.aux-services</name>
 ? ? ?  <value>mapreduce_shuffle</value>
 ?  </property>
</configuration>

同样仅添加property标签中的内容,最终文件和下面类似:

Step 2 启动YARN

使用如下命令启动ResourceManager和NodeManager进程:

start-yarn.sh

启动完成:

?注意,启动日志位于/opt/hadoop安装目录/logs下面。

Step 3 验证YARN

1)使用jps命令查看启动进程:

会出现ResourceManager和NodeManager进程。

2)访问ResoureManager的web界面:

http://192.168.56.210:8088

网页显示如下:

此时一个完整的hadoop伪分布式模式已经安装完成,你可以像前面一样运行wordcount程序,此时将使用YARN作为mapreduce 作业调度框架。

如需关闭hadoop集群执行如下脚本:

stop-dfs.sh
stop-yarn.sh

2 安装总结

  1. 伪分布模式需要配置ssh免密

  2. 伪分布模式使用java进程模拟各个组件

  3. 伪分布模式将使用hdfs系统

  4. 伪分布模式可以配置YRAN执行MapReduce作业,如不配置默认使用本地模式执行MapReduce作业。

  5. NameNode的web界面端口是50070

  6. ResourceManager的web界面端口是8088

3 附录

1)单点模式安装:Apache Hadoop 2.10.1 – Hadoop: Setting up a Single Node Cluster.

2)Hadoop2.x常见web端口:

Note:

要访问MapReduce JobHistory Server,需要先用如下命令启动该服务:

mr-jobhistory-daemon.sh start historyserver

然后访问:

http://192.168.56.210:19888

默认情况下,start-dfs.sh、start-yarn.sh脚本,甚至使用start-all.sh脚本都不会启动该服务。

此时可以是jps命令检查启动情况:

3)Hadoop2.x常见端口

Hadoop、Hive、Hbase常用端口大全_zp17834994071的博客-CSDN博客_hbase 端口

3)Hadoop各版本下载链接:

Index of /dist/hadoop/common

Hadoop2.8 完全分布式安装

1 安装概述

此安装过程在伪分布安装的基础上继续安装,如果没有进行伪分布式安装,需要参考伪分布安装过程进行适当调整。

2 节点规划

IP主机名功能
192.168.56.210hadoop01NameNode/ResourceManager
192.168.56.220hadoop02DataNode/NodeManager
192.168.56.230hadoop03DataNode/NodeManager

Note:

上面的规划为了节约虚拟机资源,但是,在实际的生产环境中,NameNode和ResourceManager,他们都是主节点,通常都各自安装在集群中独立的机器上。其他服务,比如Web App Proxy Server、MapReduce Job History Server则根据负载情况,选择运行在专属硬件上,或者和其他硬件共享。其他机器作为从节点,扮演DataNode和NodeManager角色(DataNode和NodeManager放在一起)。

3 节点准备

Step 1 准备虚拟机

1)准备3台虚拟机

3台虚拟机设置好固定IP地址,如果已经按伪分布方式安装了hadoop,则需要另外再准备2台虚拟机,并将这2台虚拟机设置好固定ip地址。3台虚拟机可以互相ping通。

2)修改主机名

在第一台机器(192.168.56.210)上执行如下命令

vi /etc/hostname

修改成如下图:

3)修改hosts文件

在第一台机器上运行如下命令:

vi /etc/hosts

按dd删除原有内容,然后添加如下内容:

192.168.56.210 ?hadoop01
192.168.56.220 ?hadoop02
192.168.56.230 ?hadoop03

编辑后的内容如下:

4)关闭防火墙

各个节点的防火墙都应关闭,运行如下命令:

systemctl stop firewalld
systemctl disable firewalld

Note:

各个节点的防火墙都需关闭,如果不关闭,或者存在有节点忘记关闭的情况,会造成:

1 hadoop相关的web界面无法访问

2 在使用hdfs发生文件复制操作时比如 hdfs -put会提示有节点被排除在外,主要原因就是namenode和datanode间存在防火墙,彼此无法联系到对方。

修改其他节点

在第2~3台虚拟机上执行第2~4步完成各节点的主机名、hosts文件的修改以及关闭防火墙操作。

5)重启使配置生效

reboot

重启完成后,登陆到系统,从shell提示符中,确认主机名是否修改:

Step 2 配置SSH免密

为了各节点间不必输入密码登录各服务器,需要配置3台服务器互信,也就是ssh的免密钥登录。

1)在hadoop01节点上执行ssh-keygen -t rsa,连续回车生成/root/.ssh/id_rsa.pub文件:

[root@hadoop01 ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
/root/.ssh/id_rsa already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:So79o8ZpwJChdAdSS1VyxD6jgfnVLcN33GY5NaT7aTo root@hadoop01
The key's randomart image is:
+---[RSA 2048]----+
| ..+oo++ ? ? ?.. |
| .+...o. ? ? ?...|
|...++ . o . ... +|
|. oo . = = o o.* |
| ? o. = S + ..o .|
| ? ?oB . ? ? ?. .|
| ? ?.o+. ? ? ? + |
| ? ? ?=.. ? ?Eo ?|
| ? ? o.... ? .. ?|
+----[SHA256]-----+

Note:

中间过程不需要任何输入,一直回车即可,如果以前生成过密钥,选择y覆盖。

生成的公钥和私钥:

id_rsa为私钥,id_rsa_pub为公钥

同样通过ssh登陆到hadoop02及hadoop03完成密钥生成操作,操作完成后,注意检查两个密钥文件是否存在。

2)收集各节点公钥生成授信列表文件(authorized_keys)

分别在hadoop01~03上运行如下命令:

cat /root/.ssh/id_rsa.pub

分别将cat命令显示的内容拷贝到一个临时的记事本当中,以下是搜集起来的3条公钥:

?ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDi/HaA9aXUgYcqD/N4oVSlp+Wmex44b/k4V23PXOU6wbnptq6FXvoz86Bp3+wQ3aafxpCYP2NZ2IxeyDNK2DyDFvpXYeSteRydazB2+ICHAmMwXzv5a2MFEAiEqOTuUJ4gbOd3st9M53VVE0Ukz9I+4JCYalFsxxxzfWAUGYLbMqiHjPulY2Iy7ib3JvpkEv/5DpPtcnxgaiAty2LDdMe7lcd8aAfCaMpVDUxB/YCptQBKCJtEmTJfBPVIVjnO4T9bUmzC96GjQBqolPI9TAT/a5bQ8fjlZ57UDlHWbuiOFeJ8ZWpNkn564z8dyfFWduSyy8IkDe3D14MOQB4j5Zlp root@hadoop01
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDRVkwoSx6bo+O2Isotcs5boZ6AfKMsU48pqD5I7rqPGX7UAWPMz0ovzM1YKZiwdwUyMyx+XqFtjNPzM6s9b8bQCxr9FtwFoozviCWu2wIDx4TIMhxTMRrKMGkmku7ONj2W6R2QfvGZVDHgNIE7NeSkHt8tvY7z51pf6XyKt3+LHZjiStvee1KX4fbh8jTH9pZrY0KYWMlizFgkMj5BvFM/8wD5XBusJLxb0BiEdKFeXhF+isTEzO9uuLdHMzfsQgPgptPGdlrFxNF3kx61DJT6m1WnEcvz44JaaqJfxv49c3vaPSQItGcWz2S2SAZVf1YJe5laAUAZadfyoehWgXob root@hadoop02
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBax05OyEh/Q/eh986jna4kveHSQuqE6J4O4kwYt93ywF2/nR1r4tc9/PTNzg3nyV8E8GuYduAycG6GK/q0ZBAOFL/Te+2jF8uUK4k0FMw6TyRf1ldlQdoDz6R4Nq/bUMkgUNiTGthvCeglbHi4ctrXMQM6u5TbgfmfMbQGQCZaWULR7ufyJ68VPL+VBqAjtBkDZlnLS6l5lWAFGxuNlEv+ZzHaGqHoMZiTmpeFrYbZNHITl0FwsBBaXMHq61yEBFMRlZP3MdeJuzWhho2XR6XAMY1eiWJXP2qSYd66D/gEwDfNCvmB0wSkOYyNRpI6URBt91N2zKdmYPhbIAonwvl root@hadoop03

上面的文件就是3台机器的公钥内容。需要把这些内容放到每台机器的authorized_keys文件中(默认和密钥对在同一个文件夹中,如不存在,需要自己建立)。

首先在hadoop01节点上通过如下命令建立受信列表文件:

[root@hadoop01 ~]# vi /root/.ssh/authorized_keys

将前面收集的内容拷贝到vi编辑器中,并保存退出:

Note:

如果authorized_keys以前有内容可以直接删除,查看3台机器的公钥无遗漏

3)将authorized_keys分发到其他节点

在hadoop01上执行如下命令,将authorized_keys文件远程拷贝到hadoop02和hadoop03节点:

 scp /root/.ssh/authorized_keys root@hadoop02:/root/.ssh/authorized_keys
 scp /root/.ssh/authorized_keys root@hadoop03:/root/.ssh/authorized_keys

Note:

以上命令分两次执行,中间需要输入yes,并输入ssh访问密码。

4)验证免密设置

在每个节点上运行ssh命令,确保各个节点间不需要输入密码,第一次访问其他主机可能需要输入yes,运行结果与下图类似:

在这里遇到如下问题:

注意查看密钥文件有没有问题,如果没有问题则看看/etc/hosts 下的ip地址和主机名,这里我的密钥文件没问题,将hosts文件修改为如下:

使用远程拷贝命令传到hadoop02、hadoop03节点

[root@hadoop01 ~]# ?scp /etc/hosts root@hadoop02:/etc/hosts
[root@hadoop01 ~]# ?scp /etc/hosts root@hadoop03:/etc/hosts

??

Step 3 准备JDK

如果已经在hadoop01上完成了伪分布式安装,则此时已经装有jdk,只需要将jdk和环境变量分发到集群中的其他节点,如果没有在hadoop01上完成伪分布式安装,此处需要安装伪分布安装文档中关于jdk安装部分,安装及配置jdk。

此文档假设你已经在hadoop01上完成了伪分布式安装,下面的操作仅进行jdk机器配置的分发:

1)分发jdk

在hadoopnode1上执行如下命令:

scp -r /usr/local/jdk1.8.0_241/ root@hadoop02:/usr/local/
scp -r /usr/local/jdk1.8.0_241/ root@hadoop03:/usr/local/

Note:

scp -r参数表示递归拷贝,拷贝过程中不应再输入密码。

2)分发环境变量配置

在hadoop01上执行如下命令:

 scp /etc/profile root@hadoop02:/etc/
 scp /etc/profile root@hadoop03:/etc/

拷贝完成后,无需执行source命令,配置在下次ssh登陆时自动生效。

3)检查jdk是否可用

分别通过ssh命令登陆到hadoop02及hadoop03节点,运行java -version命令检查java版本:

4 Hadoop集群安装

Step 1 在单节点上安装配置Hadoop

1)在hadoop01上安装hadoop

本文档假设你已经在hadoop01上完成伪分布式安装,如果没有完成该步骤你需要将Hadoop安装包上传到hadoop01节点,并将其解压,移到到/opt目录下,具体操作参考伪分布式安装文档。

2)配置hadoop所使用的JDK

如果你已完成伪分布式安装,此步骤可以省略,否则需要编辑hadoop-env.sh文件正确设置jdk安装位置。

3)编辑core-site.xml文件

如果已完成伪分布安装,需要修改该配置文件,将配置中的localhost换成实际的namenode节点主机名:

 vi /opt/hadoop-2.8.5/etc/hadoop/core-site.xml

配置如下:

<configuration>
 ?  <property>
 ? ? ?  <name>fs.defaultFS</name>
 ? ? ?  <value>hdfs://hadoop01:9000</value>
 ?  </property>
 ?  <property>
 ? ? ?  <name>hadoop.tmp.dir</name>
 ? ? ?  <value>/opt/hadoop-2.8.5/tmp</value>
 ? ? ?  </property>
</configuration>

最终文件内容和如下类似:

Note:

只需要将localhost修改成hadoop01其他设置不变

4)编辑hdfs-site.xml文件

使用vi编辑hdfs-site.xml文件,将复制因子修改为2(因为只规划了2个DataNode):

vi /opt/hadoop-2.8.5/etc/hadoop/hdfs-site.xml

修改后内容如下:

<configuration>
 ?  <property>
 ? ? ?  <name>dfs.replication</name>
 ? ? ?  <value>2</value>
 ?  </property>
</configuration>

修改结果:

5)编辑yarn-site.xml文件

 vi /opt/hadoop-2.8.5/etc/hadoop/yarn-site.xml

添加resourcemanager主机名,最终内容和下面类似:

<configuration>
?
<!-- Site specific YARN configuration properties -->
 ? ?<property>
 ? ? ? ?<name>yarn.nodemanager.aux-services</name>
 ? ? ? ?<value>mapreduce_shuffle</value>
 ? ?</property>
 ? ?<property>
 ? ? ? ?<name>yarn.resourcemanager.hostname</name>
 ? ? ? ?<value>hadoopnode1</value>
 ? ?</property>
</configuration>

修改后的结果:

6)编辑mapred-site文件

mapred-site文件和伪分布一样,无需做出修改,如果没有按伪分布安装,则需要拷贝出此文件,添加如下配置:

    <property>
 ? ? ? ?<name>mapreduce.framework.name</name>
 ? ? ? ?<value>yarn</value>
 ? ?</property>

??

7)编辑slaves文件

此处和伪分布安装不同,需要在slaves中删除localhost,并添加实际的DataNode节点。

使用vi编辑slaves文件:

 vi /opt/hadoop-2.8.5/etc/hadoop/slaves

删除原有的localhost,修改成如下内容:

hadoop02
hadoop03

修改后的结果:

8)设置hadoop环境变量

修改/etc/profile文件,设置hadoop环境变量,如果已完成伪分布式安装,此文件无需修改,如未完成安装需在此文件末尾添加hadoop环境变量,并使用source使环境变量生效:

export HADOOP_HOME=/opt/hadoop-2.8.5
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

最终的/etc/profile文件:

Step 2 分发Hadoop

1)清理伪分布安装的hdfs

如果从伪分布模式基础上进行的安装,因为伪分布已经启动过,此时hdfs系统有残留,在分发hadoop前,需要清理tmp文件夹,在namenode节点运行如下命令:

cd /opt/hadoop-2.8.5
rm -rf tmp

如果是全新安装,可以忽略此步

2)将hadoop01上的hadoop安装内容分发到各节点

在hadoop01上执行如下命令:

scp -r /opt/hadoop-2.8.5/ root@hadoop02:/opt
scp -r /opt/hadoop-2.8.5/ root@hadoop03:/opt

3)将/etc/profile文件分发到各节点

如果在伪分布阶段已在/etc/profile文件中添加了hadoop环境变量,此处已经在前面安装jdk时分发过了,此处可以忽略。

后面的格式化及验证过程,基本上和伪分布式相同。

Step 3 格式化namenode

执行如下命令格式化namenode节点:

hdfs namenode -format

出现如下信息表示格式化成功:

Note

如果安装过伪分布式,则hdfs系统已经存在,注意选择y覆盖原有系统

hdfs格式化成功后,文件系统会在配置文件设置的目录下,此处为:/opt/hadoop安装目录/tmp

Step 4 验证Hadoop

1)启动HDFS

运行如下命令启动hdfs:

start-dfs.sh

运行结果:

Note:

第一次连接到其他服务器会要求输入yes,但不应该输入密码,因为已经配置了免密

会逐一启动1个namenode,2个datanode和一个secondarynamenode。

如果启动有问题,可以查看日志文件夹进行排查,日志位置默认为:/opt/hadoop安装目录/logs

?在NameNode节点运行jps会看到如下进程:

分别在DataNode节点运行jps会看到如下进程:

 

Note

如果datanode进程不存在,需要查看datanode节点上的启动日志,大多数是datanode上的数据块无法在namenode上注册失败导致,可以通过以下步骤解决问题:

  1. 删除datanode节点下的hdfs系统,通常在当前datanode的/opt/hadoop安装目录/tmp/dfs下,直接进入tmp文件夹通过rm -rf dfs即可删除,分别删除启动不成功的datanode中的系统

  2. 在namenode上停止hdfs:stop-dfs.sh

  3. 在namenode上重新启动dfs:start-dfs.sh

特别注意,如果从伪分布系统上开始安装,在分发hadoop前需要清理tmp文件夹,把伪分布系统的hdfs清理干净。

2) 启动yarn

在hadoopnode1上运行如下命令:

start-yarn.sh

启动完成:

此时resourcemanager和nodemanager会分别启动,各自日志也在/opt/hadoop安装目录/logs下面,如有问题可以查看日志进行排查。

在hadoop01上运行jps会找打resourcemanager进程;分别在hadoop02和hadoop03上面运行jps会找到nodemanager进程:

 

3)访问web界面

1.NameNode的web界面:

2.yarn(resourceManager)的web界面:

Note

如果浏览器中无法显示相关页面,需要确认防火墙是否关闭,可以参考伪分布安装一节关闭防火墙。

4)验证mapreduce功能

该部分和伪分布安装中的验证mapreduce功能类似,此处仅简单描述。

  1. 在hdfs上创建文件夹:

    在hadoop01上执行如下命令:

hdfs dfs -mkdir /user
hdfs dfs -mkdir /user/root

  1. 上传统计文件到hdfs

hdfs dfs -put /opt/hadoop-2.8.5/etc/hadoop/ input

Note:

此处如果put不成功,报类似如下错误:

WARN hdfs.DataStreamer: DataStreamer Exception
org.apache.hadoop.ipc.RemoteException(java.io.IOException): File /user/root/input/mapred-env.cmd._COPYING_ could only be replicated to 0 nodes instead of minReplication (=1).  There are 2 datanode(s) running and 2 node(s) are excluded in this operation.

大致意思是说,有2个datanode节点在运行,但是在复制文件时被排除在外,原因很可能是节点间datanode节点无法联系到namenode节点,你需要检查:

1 各个节点防火墙是否关闭

2 datanode节点上core-site.xml中namenode主机名是否配置错误。

1.执行单词统计

hadoop jar /opt/hadoop-2.8.5/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.5.jar wordcount input output

2.查看结果

hdfs dfs -get output output
cat output/*

Note:

如果当前本地目录中存在output文件夹,请先删除该文件夹

  1. 关闭集群

stop-dfs.sh
stop-yarn.sh

Note:

也可以使用下面的脚本启动和关闭集群,但系统已经不建议你使用:

start-all.sh
stop-all.sh

5 附录

5.1 其他参考

  1. 完全分布式集群设置:

    Apache Hadoop 2.10.1 – Hadoop Cluster Setup

5.2 FAQ

Q1:DataNode无法注册数据块,通常会提示如下错误:

2021-11-08 09:34:53,595 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Block pool ID needed, but service not yet registered with NN, trace: java.lang.Exception

A:大多数是datanode上的数据块无法在namenode上注册失败导致,可以通过以下步骤解决问题:

  1. 删除datanode节点下的hdfs系统,通常在当前datanode的/opt/hadoop安装目录/tmp/dfs下,直接进入tmp文件夹通过rm -rf dfs即可删除,分别删除启动不成功的datanode中的系统

  2. 在namenode上停止hdfs:stop-dfs.sh

  3. 在namenode上重新启动dfs:start-dfs.sh

  4. 如果还不成功,可以重新格式化namenode

Q2: 在执行hdfs -put操作时,无法像hdfs上传文件,提示有datanode节点被排除。

WARN hdfs.DataStreamer: DataStreamer Exception org.apache.hadoop.ipc.RemoteException(java.io.IOException): File /user/root/input/mapred-env.cmd.COPYING could only be replicated to 0 nodes instead of minReplication (=1). There are 2 datanode(s) running and 2 node(s) are excluded in this operation.

A:大致意思是说,有2个datanode节点在运行,但是在复制文件时被排除在外,原因很可能是节点间datanode节点无法联系到namenode节点,你需要检查:

1 )各个节点防火墙是否关闭

可以在各节点执行防火墙关闭命令:

systemctl stop firewalld
systemctl disable firewalld

2 )datanode节点上core-site.xml中namenode主机名是否配置错误。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-03-11 22:17:06  更:2022-03-11 22:20:37 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 9:07:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码