我是靠谱客的博主 迷人小白菜,这篇文章主要介绍Ubuntu18.04 Hadoop 搭建Ubuntu18.04 Hadoop 搭建,现在分享给大家,希望可以做个参考。

Ubuntu18.04 Hadoop 搭建


一、操作环境

1.1 操作系统:Windows 10 64位
1.2 虚拟机:VMware Workstation Pro 14.1.2

二、安装包

2.1 Ubuntu Server 镜像:ubuntu-18.04-live-server-amd64.iso
2.2 Java:jdk-8u181-linux-x64.tar.gz
2.2 Hadoop: hadoop-3.1.1.tar.gz

三、创建虚拟机

创建master
创建slave1
创建slave2

修改IP
复制代码
1
sudo vi /etc/netplan/50-cloud-init.yaml
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# This file is generated from information provided by # the datasource. Changes to it will not persist across an instance. # To disable cloud-init's network configuration capabilities, write a file # /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following: # network: {config: disabled} network: ethernets: ens32: addresses: [172.16.116.110/24] dhcp4: no optional: true gateway4: 172.16.116.254 nameservers: addresses: [223.5.5.5, 223.6.6.6] version: 2
修改主机名
复制代码
1
2
3
sudo vi /etc/hostname sudo vi /etc/cloud/cloud.cfg 将preserve_hostname: false修改为true
创建用户

为master和slave分别创建hadoop用户

复制代码
1
2
3
sudo useradd -m hadoop -s /bin/bash sudo passwd hadoop sudo adduser hadoop sudo

四、开始配置

4.1 安装openssh-server

sudo apt-get install openssh-server

4.2 使用CRT或其他工具SSH远程连接3台虚拟机

4.3 使用vi修改/etc/sudoers文件

复制代码
1
2
3
sudo vi /etc/sudoers root ALL=(ALL:ALL) ALL在此行下面添加 hadoop ALL=(ALL:ALL) ALL

4.4 使用vi修改/etc/hosts文件

sudo vi /etc/hosts
将三台机器的IP地址和主机名添加到hosts文件中,并对其余机器进行同样操作。

复制代码
1
2
3
4
5
6
7
8
9
127.0.0.1 localhost.localdomain localhost 172.16.116.110 master 172.16.116.111 slave1 172.16.116.112 slave2

4.5 免密钥登录配置

复制代码
1
ssh-keygen -t rsa -P ""

在master、slave1和slave2中键入以上代码,enter选择默认。

master:

复制代码
1
2
3
4
5
6
7
8
cd .ssh/ scp -P 2222 slave1:~/.ssh/id_rsa.pub id_rsa.pub1 scp -P 2222 slave2:~/.ssh/id_rsa.pub id_rsa.pub2 cat id_rsa.pub >> authorized_keys cat id_rsa.pub1 >> authorized_keys cat id_rsa.pub2 >> authorized_keys scp -P 2222 authorized_keys slave1:~/.ssh/ scp -P 2222 authorized_keys slave2:~/.ssh/

将authorized_keys传递给slave1和slave2
slave1 && slave2:

复制代码
1
2
cd .ssh/ ll

可看到slave1和slave2中出现了authorized_keys

4.6 免密钥登录验证

分别用三台机登陆验证
master:

复制代码
1
2
ssh -p 2222 slave1 ssh -p 2222 slave2

slave1:

复制代码
1
2
ssh -p 2222 master ssh -p 2222 slave2

slave2:

复制代码
1
2
ssh -p 2222 master ssh -p 2222 slave1

4.7 安装Java和hadoop包

4.7.1 将文件拷贝进虚拟机

在/home/hadoop文件夹下新建文件夹softs
将jdk-8u181-linux-x64.tar.gz和hadoop-3.1.1.tar.gz上传到softs文件夹中

4.7.2 解压文件
复制代码
1
2
3
cd softs tar -zxvf jdk-8u181-linux-x64.tar.gz tar -zxvf hadoop-3.1.1.tar.gz

移动程序

复制代码
1
2
sudo mv jdk1.8.0_181/ /usr/local/jdk1.8 sudo mv hadoop-3.1.1/ /usr/local/hadoop3

更改目录权限

复制代码
1
2
cd /usr/local sudo chmod -R 777 hadoop3/ jdk1.8/

更改拥有者

复制代码
1
sudo chown -R hadoop:hadoop hadoop3/ jdk1.8/

4.7.3 添加环境变量

4.7.3.1 添加Java环境变量
复制代码
1
2
3
cd ~ ls -all vi .bashrc

在最下方添加如下环境变量:

复制代码
1
2
3
4
5
#JAVA VARIABLES export JAVA_HOME=/usr/local/jdk1.8/ export JRE_HOME=$JAVA_HOME/jre export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib export PATH=$JAVA_HOME/bin:$PATH

立即执行.bashrc使环境变量生效

复制代码
1
source .bashrc

验证Java环境变量是否生效

复制代码
1
2
3
$PATH java -version javac -version
4.7.3.2 添加Hadoop环境变量
复制代码
1
vi .bashrc

在最下方添加如下环境变量:

复制代码
1
2
3
4
5
6
7
8
9
10
#HADOOP VARIABLES export HADOOP_HOME=/usr/local/hadoop3 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"

立即执行.bashrc使环境变量生效

复制代码
1
source .bashrc

验证Java环境变量是否生效

复制代码
1
$PATH

对slave1和slave2进行相同配置

4.7.4 Hadoop配置
复制代码
1
vi /usr/local/hadoop3/etc/hadoop/hadoop-env.sh

将配置${JAVA_HOME}为jdk绝对路径,比如 /usr/local/jdk1.8

复制代码
1
export JAVA_HOME=/usr/local/jdk1.8
4.7.5 Hadoop验证(master)

启动单机WordCount测试
cd /usr/local/hadoop2
cp README.txt input
./bin/hadoop jar share/hadoop/mapreduce/sources/hadoop-mapreduce-examples-3.1.1-sources.jar org.apache.hadoop.examples.WordCount input output
这里写图片描述

查看输出结果

复制代码
1
cat output/*

4.8 Hadoop伪分布式安装部署

4.8.1修改Hadoop集群的配置文件

4.8.1.1 修改hadoop-env.sh文件
复制代码
1
cd /usr/local/hadoop3/etc/hadoop

将hadoop-env.sh中jdk8

复制代码
1
2
# The java implementation to use. export JAVA_HOME=/usr/local/jdk8

改为jdk1.8

复制代码
1
2
# The java implementation to use. export JAVA_HOME=/usr/local/jdk1.8
4.8.1.2 修改mapred-env.sh文件

将mapred-env.sh中jdk8

复制代码
1
export JAVA_HOME=/usr/local/jdk8

改为jdk1.8

复制代码
1
export JAVA_HOME=/usr/local/jdk1.8
4.8.1.3 修改yarn-env.sh文件

将yarn-env.sh文件中jdk8

复制代码
1
2
# some Java parameters export JAVA_HOME=/usr/local/jdk8

改为jdk1.8

复制代码
1
2
# some Java parameters export JAVA_HOME=/usr/local/jdk1.8
4.8.1.4 修改core-site.xml文件

将以下代码拷入core-site.xml文件

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>hadoop.tmp.dir</name> <value>/usr/local/hadoop3/tmp</value> <description>文件临时存储目录</description> </property> <property> <name>fs.defaultFS</name> <!-- 1.x name>fs.default.name</name --> <value>hdfs://master:9000</value> <description>hdfs namenode访问地址</description> </property> <property> <name>io.file.buffer.size</name> <value>102400</value> <description>文件块大小</description> </property> </configuration>
4.8.1.5 修改hdfs-site.xml

将以下代码拷入hdfs-site.xml文件

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <!-- property> <name>dfs.http.address</name> <value>master:50070</value> </property --> <property> <name>dfs.namenode.secondary.http-address</name> <value>slave1:50080</value> </property> <property> <name>dfs.replication</name> <value>1</value> <description>文件块的副本数</description> </property> </property> <property> <name>dfs.name.dir</name> <value>/usr/local/hadoop3/hdfs/name</value> <description>namenode目录</description> </property> <property> <name>dfs.data.dir</name> <value>/usr/local/hadoop3/hdfs/data</value> <description>datanode目录</description> </property> <!-- property> <name>dfs.webhdfs.enabled</name> <value>true</value> </property --> </configuration>
4.8.1.6 修改mapred-site.xml

将以下代码拷入mapred-site.xml文件

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <!-- property> <name>mapred.map.tasks</name> <value>20</value> </property> <property> <name>mapred.reduce.tasks</name> <value>4</value> </property> <property> <name>mapred.job.tracker</name> <value>master:9000</value> <description>job tracker地址</description> </property --> <property> <name>mapreduce.jobhistory.address</name> <value>master:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>master:19888</value> </property> </configuration>
4.8.1.7 修改yarn-site.xml

将yarn-site.xml文件中所有bdm1替换为master

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?xml version="1.0"?> <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.hostname</name> <value>master</value> </property> <property> <name>yarn.resourcemanager.address</name> <value>master:8032</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>master:8030</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>master:8031</value> </property> <property> <name>yarn.resourcemanager.admin.address</name> <value>master:8033</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>master:8088</value> </property> </configuration>
4.8.1.8 修改slave

将slave文件中

复制代码
1
2
3
4
5
bds1 bds2 bds3 bds4 bds5

改为

复制代码
1
2
slave1 slave2

4.8.2 分发配置文件到slave1和slave2

复制代码
1
2
3
cd /usr/local/hadoop3 scp etc/hadoop/* slave1:/usr/local/hadoop3/etc/hadoop scp etc/hadoop/* slave2:/usr/local/hadoop3/etc/hadoop

4.8.3 格式化HDFS

使用ll命令查看当前目录/usr/local/hadoop3下的文件列表

复制代码
1
./bin/hdfs namenode -format

使用ll命令查看当前目录/usr/local/hadoop3下的文件列表
可看到多出了hdfs文件夹

4.8.4 启动Hadoop集群和资源管理平台

复制代码
1
./sbin/start-dfs.sh

使用ll命令查看可发现多了log日志文件夹

复制代码
1
./sbin/start-yarn.sh

在浏览器地址栏输入172.16.116.110:50070可进入集群监控界面

停止资源管理平台和Hadoop集群

复制代码
1
2
./sbin/stop-yarn.sh ./sbin/stop-dfs.sh

启动Hadoop集群和相关服务

复制代码
1
./sbin/start-all.sh

启动后在3台服务器上查看

复制代码
1
jps

这里写图片描述
这里写图片描述
这里写图片描述

在浏览器地址栏输入172.16.116.110:8088可进入资源管理界面
这里写图片描述

4.8.5 伪分布式部署测试:运行WordCount示例

复制代码
1
2
3
cat README.txt >> a.txt cat a.txt >> b.txt cat b.txt >> word.txt

使用ll命令查看当前目录
这里写图片描述

复制代码
1
rm -rf a.txt b.txt

使用ll命令查看当前目录
这里写图片描述
已经成功删除a.txt和b.txt

复制代码
1
2
./bin/hadoop fs -mkdir -p input ./bin/hadoop fs -copyFromLocal word.txt input

可在文件目录/user/hadoop/input中搜索到word.txt

可查看到有关word.txt的信息
可查看到有关word.txt的信息

./bin/hadoop jar share/hadoop/mapreduce/sources/hadoop-mapreduce-examples-2.8.4-sources.jar org.apache.hadoop.examples.WordCount input output
此时的资源管理界面为
这里写图片描述
这里写图片描述
该任务详情
这里写图片描述
可在/user/hadoop/output文件夹中查看到输出结果
这里写图片描述

在本机C:/windows/system32/drivers/etc/hosts的最下方添加:

复制代码
1
2
3
4
5
6
172.16.116.110 master 172.16.116.111 slave1 172.16.116.112 slave2

点击Download即可启动下载输出结果
这里写图片描述

复制代码
1
hadoop fs -rm -r -f output

可看到在文件系统中删除了output文件夹
可看到在文件系统中删除了output文件夹
这里写图片描述

停止Hadoop集群所有服务
./sbin/stop-all.sh
这里写图片描述

4.9 补充

发现在HDFS文件管理系统中无法删除/user/hadoop/input文件夹中的文件,提示信息为Permission denied: user=dr.who, access=WRITE, inode=”/user/hadoop/input”:hadoop:supergroup:drwxr-xr-x

这里写图片描述
输入hadoop fs -ls发现当前文件夹的所有者hadoop的权限为rwx,拥有者所在群组为supergroup的权限为rx,其他用户的权限为rx
这里写图片描述

修改权限

复制代码
1
./bin/hadoop dfs -chmod -R 777 /user/hadoop/input

此时,可从HDFS文件系统中删除/user/hadoop/input文件夹中的文件了
这里写图片描述

最后

以上就是迷人小白菜最近收集整理的关于Ubuntu18.04 Hadoop 搭建Ubuntu18.04 Hadoop 搭建的全部内容,更多相关Ubuntu18.04内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(65)

评论列表共有 0 条评论

立即
投稿
返回
顶部