0


Hadoop完全分布式搭建(Hadoop-3.3.0)

    本教程讲解Hadoop-3.3.0在Ubuntu系统下集群的搭建。

    在正式开始之前,需要自己先安装好一台虚拟机。下面给大家整理了过程中需要用到的资源包,可以自行获取:
链接:https://pan.baidu.com/s/1TWErk6DAyV99WId1af2kqg?pwd=wcop 
提取码:wcop 
--来自百度网盘超级会员V4的分享

创建hadoop用户

1.打开终端,输入命令,创建新用户

sudo useradd -m hadoop -s /bin/bash

2.为hadoop用户设置密码

sudo passwd hadoop

3.为了我们后面操作方便,这里可以给予hadoop用户添加管理员权限

sudo adduser hadoop sudo

最后,在右上角齿轮注销当前用户,登录上我们刚刚创建的hadoop用户。

更新apt

1.更改下载服务器

    系统默认的软件源一般都是在外网,有时候不一定能下载成功,所以可以更改下软件源。进入系统设置(齿轮图标) --> 软件与更新

选择其他站点,再选择国内的软件源。

再点击右下角的选择服务器,输入密码授权。

根据弹窗信息,点击重新载入,等待加载。

2.打开终端,输入命令:

sudo apt-get update

更新apt,后续我们需要通过它来安装软件。

3.安装vim,输入命令:

sudo apt-get install vim
    遇到下面提示时,直接输入y即可。

之后回车,等待安装即可。

安装SSH

1.输入命令,安装SSH

sudo apt-get install openssh-server
  1. 安装成功后,执行下面命令登录到本机
ssh localhost

当有以下提示时,输入yes。然后再输入密码即可登录到本机。

但是这样我们每次登录都是需要密码的,所以我们接下来对ssh进行配置,使能无密码登录。

配置SSH免密登录

1.执行命令exit退出SSH,回到我们原来的窗口

2.利用ssh-keygen生成密钥,并将密钥加到授权中

cd ~/.ssh/                     # 若没有该目录,请先执行一次ssh localhost
ssh-keygen -t rsa              # 会有提示,都按回车就可以
cat ./id_rsa.pub >> ./authorized_keys  # 加入授权

3.再次使用ssh localhost即可无密码登陆到本机

Xshell、Xftp连接

1.xshell、xftp直接在官网下载即可,个人版的免费使用

2.执行命令ifconfig查看当前虚拟机的ip

3.连接xshell、xftp(以xshell为例)

然后输入用户名、密码即可连接成功

安装Java环境

(1)第一种方式

1. cd /usr/lib
2. sudo mkdir jvm #创建/usr/lib/jvm目录用来存放JDK文件
3. cd ~ #进入hadoop用户的主目录
4. cd Downloads  #注意区分大小写字母,刚才已经通过FTP软件把JDK安装包jdk-8u371-linux-x64.tar.gz上传到该目录下
5. sudo tar -zxvf ./jdk-8u371-linux-x64.tar.gz -C /usr/lib/jvm  #把JDK文件解压到/usr/lib/jvm目录下

接下来配置环境变量,执行命令

vim ~/.bashrc

在开头加入以下内容

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_371
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

保存并退出,然后执行以下命令,是配置立马生效。

source ~/.bashrc

最后执行命令查看是否配置成功,出现下面情况即为配置成功

hadoop@ubuntu:~$ java -version
java version "1.8.0_371"
Java(TM) SE Runtime Environment (build 1.8.0_371-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)

(2)第二种方式

1.在没有安装jdk的情况下,我们执行命令java -version,会有提示

2.根据提示执行命令

sudo apt install openjdk-8-jre-headless

3.配置环境变量,执行命令:vim ~/.bashrc,在文件开头加入以下内容

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-i386
export PATH=$JAVA_HOME/bin:$PATH

保存退出

4.执行命令source ~/.bashrc使配置即刻生效

5.执行命令java -version查看是否配置成功

     我们进行到这里,在正式安装Hadoop之前的一些基本配置已经完成,我们可以在关机状态(一定要在关机状态下)拍摄一个快照。

Slave1的配置

1.我们通过上面的快照克隆出一个新的虚拟机,作为我们的从节点Slave1.

2.克隆出的Slave1和之前的虚拟机一模一样,但是我们还需要重新配置SSH,然后再按照上面介绍的方法对xshell、xftp进行连接。

Hadoop的安装

1.首先我们先通过网盘下载hadoop-3.3.0的压缩包,然后通过xftp将压缩包传给我们的虚拟机,要记好我们上传到虚拟机的位置,我的是在 /home/hadoop/下载/ 路径下。

2.解压到 /usr/local/ 路径下,输入命令

sudo tar -zxf hadoop-3.3.0-aarch64.tar.gz -C /usr/local

然后我们再修改一下文件名,权限

cd /usr/local/
sudo mv ./hadoop-3.3.0/ ./hadoop            # 将文件夹名改为hadoop
sudo chown -R hadoop ./hadoop       # 修改文件权限
  1. Hadoop 解压后即可使用。输入如下命令来检查 Hadoop 是否可用,成功则会显示 Hadoop 版本信息:
cd /usr/local/hadoop
./bin/hadoop version

集群的搭建

1.网络配置

1.改变虚拟机的主机名,我们将主节点设为Master,从节点设为Slave1,使用下面命令

sudo vim /etc/hostname

修改完成后,重新启动虚拟机,打开终端,主机名已经改变

2.然后,在Master节点中执行如下命令打开并修改Master节点中的“/etc/hosts”文件:

sudo vim /etc/hosts

可以在hosts文件中增加如下两条IP和主机名映射关系:

192.168.222.151 Master
192.168.222.152 Slave1

在Slave1节点下的hosts文件下添加上面映射关系,ip根据自己虚拟机情况进行修改。然后再重新启动各虚拟机,打开终端,在各结点下输入命令:测试是否相互ping得通,如果ping不通,后面就无法顺利配置成功:

ping Master -c 3  
ping Slave1 -c 3

2.SSH免密登录各节点

必须要让Master节点可以SSH无密码登录到各个Slave节点上。首先,生成Master节点的公匙,如果之前已经生成过公钥,必须要删除原来生成的公钥,重新生成一次,因为前面我们对主机名进行了修改。具体命令如下:

cd ~/.ssh              # 如果没有该目录,先执行一次ssh localhost
rm ./id_rsa*           # 删除之前生成的公匙(如果已经存在)
ssh-keygen -t rsa      # 执行该命令后,遇到提示信息,一直按回车就可以

为了让Master节点能够无密码SSH登录本机,需要在Master节点上执行如下命令:

cat ./id_rsa.pub >> ./authorized_keys

完成后可以执行命令“ssh Master”来验证一下,可能会遇到提示信息,只要输入yes即可,测试成功后,请执行“exit”命令返回原来的终端。接下来,在Master节点将上公匙传输到Slave1节点:

scp ~/.ssh/id_rsa.pub hadoop@Slave1:/home/hadoop/

上面的命令中,scp是secure copy的简写,用于在 Linux下进行远程拷贝文件,类似于cp命令,不过,cp只能在本机中拷贝。执行scp时会要求输入Slave1上hadoop用户的密码,输入完成后会提示传输完毕,如下图所示。

接着在Slave1节点上,将SSH公匙加入授权:

mkdir ~/.ssh       # 如果不存在该文件夹需先创建,若已存在,则忽略本命令
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
rm ~/id_rsa.pub    # 用完以后就可以删掉

这样,在Master节点上就可以无密码SSH登录到各个Slave节点了,可在Master节点上执行如下命令进行检验:

ssh Slave1

3.配置PATH变量

在Master节点下,首先执行命令“vim /.bashrc”,也就是使用vim编辑器打开“/.bashrc”文件,然后,在该文件最上面的位置加入下面一行内容:

export PATH=$PATH:/usr/local/hadoop/bin:/usr/local/hadoop/sbin

保存后执行命令“source ~/.bashrc”,使配置生效。

4.配置集群环境

在配置集群/分布式模式时,需要修改“/usr/local/hadoop/etc/hadoop”目录下的配置文件,这里仅设置正常启动所必须的设置项,包括workers 、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml共5个文件

(1)修改workers

在进行分布式配置时,可以保留localhost,让Master节点同时充当名称节点和数据节点,或者也可以删掉localhost这行,让Master节点仅作为名称节点使用。
本教程让Master节点仅作为名称节点使用,因此将workers文件中原来的localhost删除,只添加如下一行内容:

Slave1

(2)修改core-site.xml

请把core-site.xml文件修改为如下内容:

<configuration>
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://Master:9000</value>
        </property>
        <property>
                <name>hadoop.tmp.dir</name>
                <value>file:/usr/local/hadoop/tmp</value>
                <description>Abase for other temporary directories.</description>
        </property>
</configuration>

(3)修改hdfs-site.xml

对于Hadoop的分布式文件系统HDFS而言,一般都是采用冗余存储,冗余因子通常为3,也就是说,一份数据保存三份副本。但是,本教程只有一个Slave节点作为数据节点,即集群中只有一个数据节点,数据只能保存一份,所以 ,dfs.replication的值还是设置为 1。hdfs-site.xml具体内容如下:

<configuration>
        <property>
                <name>dfs.namenode.secondary.http-address</name>
                <value>Master:50090</value>
        </property>
        <property>
                <name>dfs.replication</name>
                <value>1</value>
        </property>
        <property>
                <name>dfs.namenode.name.dir</name>
                <value>file:/usr/local/hadoop/tmp/dfs/name</value>
        </property>
        <property>
                <name>dfs.datanode.data.dir</name>
                <value>file:/usr/local/hadoop/tmp/dfs/data</value>
        </property>
</configuration>

(4)修改mapred-site.xml

把mapred-site.xml文件配置成如下内容:

<configuration>
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>
        <property>
                <name>mapreduce.jobhistory.address</name>
                <value>Master:10020</value>
        </property>
        <property>
                <name>mapreduce.jobhistory.webapp.address</name>
                <value>Master:19888</value>
        </property>
        <property>
                <name>yarn.app.mapreduce.am.env</name>
                <value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
        </property>
        <property>
                <name>mapreduce.map.env</name>
                <value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
        </property>
        <property>
                <name>mapreduce.reduce.env</name>
                <value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
        </property> 
</configuration>

(5)修改yarn-site.xml

请把yarn-site.xml文件配置成如下内容:

<configuration>
        <property>
                <name>yarn.resourcemanager.hostname</name>
                <value>Master</value>
        </property>
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>
</configuration>

上述5个文件全部配置完成以后,需要把Master节点上的“/usr/local/hadoop”文件夹复制到各个节点上。具体来说,需要首先在Master节点上执行如下命令:

cd /usr/local
sudo rm -r ./hadoop/tmp     # 删除 Hadoop 临时文件
sudo rm -r ./hadoop/logs/*   # 删除日志文件
tar -zcf ~/hadoop.master.tar.gz ./hadoop   # 先压缩再复制
cd ~
scp ./hadoop.master.tar.gz Slave1:/home/hadoop

然后在Slave1节点上执行如下命令:

sudo rm -r /usr/local/hadoop    # 删掉旧的(如果存在)
sudo tar -zxf ~/hadoop.master.tar.gz -C /usr/local
sudo chown -R hadoop /usr/local/hadoop

首次启动Hadoop集群时,需要先在Master节点执行名称节点的格式化(只需要执行这一次,后面再启动Hadoop时,不要再次格式化名称节点),命令如下:

hdfs namenode -format

现在就可以启动Hadoop了,启动需要在Master节点上进行,执行如下命令:

start-dfs.sh
start-yarn.sh
mr-jobhistory-daemon.sh start historyserver

通过命令jps可以查看各个节点所启动的进程。如果已经正确启动,则在Master节点上可以看到NameNode、ResourceManager、SecondrryNameNode和JobHistoryServer进程,如下图所示。

在Slave节点可以看到DataNode和NodeManager进程,如下图所示。

缺少任一进程都表示出错。另外还需要在Master节点上通过命令“hdfs dfsadmin -report”查看数据节点是否正常启动,如果屏幕信息中的“Live datanodes”不为 0 ,则说明集群启动成功。由于本教程只有1个Slave节点充当数据节点,因此,数据节点启动成功以后,会显示如下图所示信息。

也可以在Linux系统的浏览器中输入地址“http://master:9870/”,通过 Web 页面看到查看名称节点和数据节点的状态。如果不成功,可以通过启动日志排查原因。

    特别需要注意的是,本教程只实现了一个从节点,如果你有更多的从节点,那么对应它们的操作都是一样的。

参考文献

林子雨编著-大数据软件安装和编程实践指南_厦门大学数据库实验室 (xmu.edu.cn)

等等


本文转载自: https://blog.csdn.net/qq_73866060/article/details/137061446
版权归原作者 偷放霄宫的烟花 所有, 如有侵权,请联系我们删除。

“Hadoop完全分布式搭建(Hadoop-3.3.0)”的评论:

还没有评论