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
查看输出结果
1cat 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
5bds1 bds2 bds3 bds4 bds5
改为
1
2slave1 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台服务器上查看
1jps
在浏览器地址栏输入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的信息
./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
6172.16.116.110 master 172.16.116.111 slave1 172.16.116.112 slave2
点击Download即可启动下载输出结果
1
hadoop fs -rm -r -f 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内容请搜索靠谱客的其他文章。
发表评论 取消回复