龙空技术网

「大数据」Hadoop 3.x 集群安装图文详解教程分享

架构思考 268

前言:

此刻小伙伴们对“ubuntu上传文件scp”大约比较注意,同学们都需要剖析一些“ubuntu上传文件scp”的相关资讯。那么小编在网上网罗了一些对于“ubuntu上传文件scp””的相关内容,希望兄弟们能喜欢,大家一起来学习一下吧!

本篇基于 Hadoop 3.x 版本进行安装,是之前文章《Hadoop 3.x 单机安装图文详解教程分享》的姊妹篇 。欢迎阅读~

一、部署说明

hadoop 集群模式与伪集群模式搭建的主要思路一致,只不过伪集群模式下所有节点都部署在一台主机上,而集群模式需要把节点部署在不同主机上,因而主机之间的通信是部署的重点和难点。

这里采用虚拟机的方式,创建3台虚拟主机来集群模式的搭建,其中主机1(master)部署HDFS的核心节点NameNode,主机3(slave2)部署secondNameNode;主机2(slave1)部署Yarn(集群资源管理系统和任务调度节点);3台主机上均需要部署DataNode。

由于采用虚拟机,所以首先在一台主机上安装必备软件jdk和hadoop配置;然后将该主机复制2份,修改主机名;最后完成3台主机之间的通信(免密登录),即可完成hadoop集群模式的搭建。

二、主机1上的配置

2.1 下载安装jdk(目前hadoop3只支持java8)

JDK安装包可以从oracle官网( )下载,然后使用WinSCP上传到虚拟机的Ubuntu系统。

sudo tar -xzvf jdk-8u202-linux-x64.tar.gz -C /usr/local

配置jdk环境变量

打开~/.bashrc文件

$ sudo vim ~/.bashrc

然后在文件末尾加入以下代码,保存退出。

export JAVA_HOME=/usr/local/jdk1.8.0_202export JRE_HOME=${JAVA_HOME}/jreexport CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/libexport PATH=${JAVA_HOME}/bin:$PATH

使环境变量生效

$ source  ~/.bashrc

查看java版本

$ java -version

安装成功后,会出现如下信息:

2.2 下载安装hadoop

Hadoop安装包可以从hadoop官网( )下载,然后使用WinSCP上传到虚拟机的Ubuntu系统。注意解压后赋予hadoop目录777权限,否则运行hadoop任务时会出现权限不足问题。

$ sudo mv hadoop-3.3.4.tar.gz /usr/local$ cd /usr/local$ sudo tar -xzvf hadoop-3.3.4.tar.gz$ sudo chmod -R 777 hadoop-3.3.4

配置hadoop环境变量(可以在bashrc或profile文件中添加)

打开~/.bashrc文件

$ sudo vim ~/.bashrc

然后在文件末尾加入以下代码,保存退出。

export HADOOP_HOME=/usr/local/hadoop-3.3.4export HADOOP_LOG_DIR=${HADOOP_HOME}/logsexport PATH=${HADOOP_HOME}/sbin:${HADOOP_HOME}/bin:$PATH

使环境变量生效

$ source ~/.bashrc

查看Hadoop版本信息

$ hadoop version

安装成功后,会出现如下信息:

2.3 修改配置文件

Hadoop 可以在单节点上以伪分布式的方式运行,该模式下需要对core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml、hadoop-env.sh和workers六个配置文件进行修改。配置文件的位于hadoop安装目录下的etc/hadoop/ 中。

切换到hadoop安装目录:

$ cd /usr/local/hadoop-3.3.4/

core-site.xml文件

打开core-site.xml,

$ sudo vim etc/hadoop/core-site.xml

定位到以下部分:

<configuration></configuration>

在其中添加如下代码:

<configuration>        <property>                <name>fs.defaultFS</name>                <value>hdfs://master:8020</value>        </property>        <property>                <name>hadoop.tmp.dir</name>                <value>/usr/local/hadoop-3.3.4/tmp</value>        </property>        <property>                <name>hadoop.http.staticuser.user</name>                <value>chuishuju</value>        </property></configuration>

hdfs-site.xml文件

打开 hdfs-site.xml,

$ sudo vim etc/hadoop/hdfs-site.xml

定位到以下部分:

<configuration></configuration>

在其中添加如下代码。

<configuration>        <property>                <name>dfs.namenode.http-address</name>                <value>master:9870</value>        </property>        <property>                <name>dfs.namenode.secondary.http-address</name>                <value>slave2:9868</value>        </property></configuration>

mapred-site.xml文件

打开mapred-site.xml,

$ sudo vim etc/hadoop/mapred-site.xml

定位到以下部分:

<configuration></configuration>

在其中添加如下代码。

<configuration>        <property>                <name>mapreduce.framework.name</name>                <value>yarn</value>        </property>        <property>                <name>mapreduce.application.classpath</name>                <value>/usr/local/hadoop-3.3.4/share/hadoop/mapreduce/*:/usr/local/hadoop-3.3.4/share/hadoop/mapreduce/lib/*</value>        </property>        <property>                <name>mapreduce.jobhistory.address</name>                <value>slave1:10020</value>        </property>        <property>                <name>mapreduce.jobhistory.webapp.address</name>                <value>slave1:19888</value>        </property></configuration>

yarn-site.xml文件

打开yarn-site.xml,

$ sudo vim etc/hadoop/yarn-site.xml

定位到以下部分:

<configuration></configuration>

在其中添加如下代码

<configuration>        <property>                <name>yarn.nodemanager.aux-services</name>                <value>mapreduce_shuffle</value>        </property>        <property>                <name>yarn.resourcemanager.hostname</name>                <value>slave1</value>        </property>        <property>                <name>yarn.nodemanager.env-whitelist</name>                <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>        </property>        <property>                <name>yarn.application.classpath</name>                <value>/usr/local/hadoop-3.3.4/etc/hadoop:/usr/local/hadoop-3.3.4/share/hadoop/common/lib/*:/usr/local/hadoop-3.3.4/share/hadoop/common/*:/usr/local/hadoop-3.3.4/share/hadoop/hdfs:/usr/local/hadoop-3.3.4/share/hadoop/hdfs/lib/*:/usr/local/hadoop-3.3.4/share/hadoop/hdfs/*:/usr/local/hadoop-3.3.4/share/hadoop/mapreduce/*:/usr/local/hadoop-3.3.4/share/hadoop/yarn:/usr/local/hadoop-3.3.4/share/hadoop/yarn/lib/*:/usr/local/hadoop-3.3.4/share/hadoop/yarn/*</value>        </property>        <property>                <name>yarn.log-aggregation-enable</name>                <value>true</value>        </property>        <property>                <name>yarn.log.server.url</name>                <value>;/value>        </property>        <property>                <name>yarn.log-aggregation.retain-seconds</name>                <value>604800</value>        </property>        <property>                <name>yarn.nodemanager.vmem-check-enabled</name>                <value>false</value>        </property></configuration>

hadoop-env.sh

打开hadoop-env.sh文件

$ sudo vim etc/hadoop/hadoop-env.sh

在文件末位添加jdk路径和用户名

export JAVA_HOME=/usr/local/jdk1.8.0_202/export HDFS_NAMENODE_USER=chuishujuexport HDFS_DATANODE_USER=chuishujuexport HDFS_SECONDARYNAMENODE_USER=chuishujuexport YARN_RESOURCEMANAGER_USER=chuishujuexport YARN_NODEMANAGER_USER=chuishuju

workers

打开hadoop-env.sh文件

$ sudo vim etc/hadoop/workers

将文件前三行内容修改为如下内容(master和slave1、slave2是三台主机名)。

masterslave1slave2

2.4 主机2和主机3的复制

主机1配置好后,需要将其关机。

找到主操作系统VMware虚拟机的存放目录,直接复制粘贴两份。为了区分各主机的名字,分别将文件夹命名为Ubuntu-master、Ubuntu-slave1、Ubuntu-slave2(主机1如果之前没有命名为Ubuntu-master,也可以在这步命名),如下图所示:

打开master主机

进入VMware主界面,选择打开虚拟机;然后选择Ubuntu-master所在目录。

进入Ubuntu-master目录,双击Ubuntu.vmx加载虚拟机,然后按开机按钮开机。

由于之前对主机1进行了重命名,所以会出现如下提示框。注意这里选择我已复制该虚拟机(ip地址保留原来的)。

进入master主机后,采用ifconfig命令查看ip地址并记下。

打开slave1和slave2主机

按照同样的方式,在VMware中分别选择Ubuntu-slave1和Ubuntu-slave2目录下的Ubuntu.vmx,打开slave1和slave2主机。

在开机时,会出现如下提示框,注意必须选择我已复制该虚拟机(slave1和slave2会重新分配ip地址,否则三个主机ip地址一致,无法同时联网)。

同样,进入slave1和slave2主机后,分别采用ifconfig查看ip地址并记下。

2.5 主机1、2、3间免密通信(一)

master主机的配置

修改主机名

$ sudo vim /etc/hostname

将文件的第一行改为master,然后保存退出。

修改成功后,shell中以“用户名@主机名:”的形式显示,如下图所示(需要重启)。

配置主机之间的IP映射

$ sudo vim /etc/hosts

进入hosts文件中,添加如下三下IP映射

安装ssh-server

$ sudo apt install openssh-server

配置ssh无密码登陆

生成公钥与私钥(注意三次提示都直接按回车)。

$ ssh-keygen -t rsa

切换到".ssh"隐藏目录

cd  ~/.ssh  

将密钥加入到授权中

$ cat ./id_rsa.pub >> ./authorized_keys 

slave1主机的配置

修改主机名

$ sudo vim /etc/hostname

将文件的第一行改为slave1,然后保存退出。

配置主机之间的IP映射

$ sudo vim /etc/hosts

进入hosts文件中,添加如下三下IP映射

安装ssh-server

$ sudo apt install openssh-server

配置ssh无密码登陆

生成公钥与私钥(注意三次提示都直接按回车)。

$ ssh-keygen -t rsa

切换到".ssh"隐藏目录

cd  ~/.ssh  

将密钥加入到授权中

$ cat ./id_rsa.pub >> ./authorized_keys  

slave2主机的配置

修改主机名

$ sudo vim /etc/hostname

将文件的第一行改为slave2,然后保存退出。

配置主机之间的IP映射

$ sudo vim /etc/hosts

进入hosts文件中,添加如下三下IP映射

安装ssh-server

$ sudo apt install openssh-server

配置ssh无密码登陆

生成公钥与私钥(注意三次提示都直接按回车)。

$ ssh-keygen -t rsa

切换到".ssh"隐藏目录

cd  ~/.ssh  

将密钥加入到授权中

$ cat ./id_rsa.pub >> ./authorized_keys  

2.6 主机1、2、3间免密通信(二)

master主机的配置

将master主机的公钥发送给slave1和slave2主机

$ scp id_rsa.pub chuishuju@slave1:~/.ssh/master_rsa.pub $ scp id_rsa.pub chuishuju@slave2:~/.ssh/master_rsa.pub

slave1主机的配置

将slave1主机的公钥发送给master和slave2主机

$ scp id_rsa.pub chuishuju@master:~/.ssh/slave1_rsa.pub$ scp id_rsa.pub chuishuju@slave2:~/.ssh/slave1_rsa.pub

slave2主机的配置

将slave2主机的公钥发送给master和slave1主机

$ scp id_rsa.pub chuishuju@master:~/.ssh/slave2_rsa.pub$ scp id_rsa.pub chuishuju@slave1:~/.ssh/slave2_rsa.pub

2.7 主机1、2、3间免密通信(三)

master主机的配置

将slave1和slave2的密钥添加到授权文件

$ cat ./slave1_rsa.pub >> ./authorized_keys   $ cat ./slave2_rsa.pub >> ./authorized_keys   

slave1主机的配置

将master和slave2的密钥添加到授权文件

$ cat ./master_rsa.pub >> ./authorized_keys   $ cat ./slave2_rsa.pub >> ./authorized_keys   

slave2主机的配置

将master和slave1的密钥添加到授权文件

$ cat ./master_rsa.pub >> ./authorized_keys   $ cat ./slave1_rsa.pub >> ./authorized_keys   

2.8 主机1、2、3间免密通信(四)

前面步骤已经完成了主机1、2、3间免密通信的配置。可以试下是否成功

在master主机中执行如下命名

$ ssh slave1

如下shell中变为“用户名@slave1”,就表明免密登录成功。输入exit退出远程登录,返回master主机。

$ exit

按照相同的步骤,可以试下3台主机之间的相互免密登录是否成功。记得exit退出远程登录。

三、hadoop集群格式化与启动

3.1 master中的操作

格式化namenode

$ cd /usr/local/hadoop-3.3.4 $ sudo hdfs namenode -format

启动进程(由于权限问题,再次启动需要所有服务器上删除hadoop安装目录下的tmp目录)

$ sudo start-all.sh

查看进程

$ jps

启动成功后,会显示如下进程

6277 NameNode7016 Jps6427 DataNode6862 NodeManager

3.2 slave1中的操作

当namenode和resourcemanager分布在不同的服务器时,在master上执行start-all.sh不能启动、关闭resourcemanager,需要resourcemanager所在的服务器上执行start-yarn来启动。或者格式化集群后,在resourcemanager所在的服务器上执行start-all.sh来启动所有服务器上的进程。

启动yarn

$ cd /usr/local/hadoop-3.3.4/sbin$ start-yarn.sh

查看进程

$ jps

启动成功后,会显示如下进程

3927 NodeManager3783 DataNode4045 Jps2463 ResourceManager

3.3 slave2中的操作

查看进程

$ jps

启动成功后,会显示如下进程

5378 NodeManager5507 Jps5262 SecondaryNameNode5119 DataNode

3.4 访问后台管理页面

hdfs分布式文件系统的管理页面

在主系统的浏览器中,输入 ,其中ip地址是master主机的ip地址。

ResourceManager的管理页面 在主系统的浏览器中,输入 ,其中ip地址是slave1主机的ip地址。

四、Hadoop集群结束进程

4.1 master中的操作

$ cd /usr/local/hadoop-3.3.4 $ sudo stop-all.sh

4.2 hadoop集群模式应用

hadoop集群模式应用方式与伪集群模式基本相同。

hadoop程序的./share/hadoop/mapreduce目录下存放了hadoop自带的java应用程序包,这里介绍下hadoop-mapreduce-examples-3.3.4.jar的应用。

五、字数统计

5.1 上传需要进行单词统计的txt文件

切换到hadoop目录

$ cd /usr/local/hadoop-3.3.4

创建input目录

$ sudo mkdir wcinput

将“song.txt”文件通过WinSCP上传到虚拟机的Ubuntu系统,并移动到wcinpu目录下。

$ sudo mv song.txt /usr/local/hadoop-3.3.4/wcinput/

song.txt的内容如下:

5.2 将txt文件上传到HDFS(分布式文件系统)

在集群模式下,数据文件需要首先对应成分布式文件,然后再运行单词统计任务,分布式文件系统有自己的操作命令,一般以hdfs dfs开头。

创建分布式文件系统的用户

$ hdfs dfs -mkdir -p /user/chuishuju

为chuishuju用户创建分布式文件存放目录

$ hdfs dfs -mkdir input

将原始文件song.txt 上传到分布式文件系统

$ hdfs dfs -put /usr/local/hadoop-3.3.4/wcinput/song.txt input

查看上传的分布式文件

$ hdfs dfs -ls -R /  

运行字数统计程序

$ hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.4.jar wordcount input output

运行完成后,会在分布式文件系统中创建output文件下,part-r-00000文件存储了统计结果。

查看统计结果

$ hdfs dfs -cat output/part-r-00000

如果需要再次运行程序,需要把output文件删除,或者起一个新的输出文件夹名,否则会报错!

$ hdfs dfs -rm -r output

文章来源:

标签: #ubuntu上传文件scp #apachehadoop安装 #如何安装hadooplinux