概述
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
sudo vi /etc/netplan/50-cloud-init.yaml
# 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
修改主机名
sudo vi /etc/hostname
sudo vi /etc/cloud/cloud.cfg
将preserve_hostname: false修改为true
创建用户
为master和slave分别创建hadoop用户
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文件
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文件中,并对其余机器进行同样操作。
127.0.0.1
localhost.localdomain
localhost
172.16.116.110
master
172.16.116.111
slave1
172.16.116.112
slave2
4.5 免密钥登录配置
ssh-keygen -t rsa -P ""
在master、slave1和slave2中键入以上代码,enter选择默认。
master:
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:
cd .ssh/
ll
可看到slave1和slave2中出现了authorized_keys
4.6 免密钥登录验证
分别用三台机登陆验证
master:
ssh -p 2222 slave1
ssh -p 2222 slave2
slave1:
ssh -p 2222 master
ssh -p 2222 slave2
slave2:
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 解压文件
cd softs
tar -zxvf jdk-8u181-linux-x64.tar.gz
tar -zxvf hadoop-3.1.1.tar.gz
移动程序
sudo mv jdk1.8.0_181/ /usr/local/jdk1.8
sudo mv hadoop-3.1.1/ /usr/local/hadoop3
更改目录权限
cd /usr/local
sudo chmod -R 777 hadoop3/ jdk1.8/
更改拥有者
sudo chown -R hadoop:hadoop hadoop3/ jdk1.8/
4.7.3 添加环境变量
4.7.3.1 添加Java环境变量
cd ~
ls -all
vi .bashrc
在最下方添加如下环境变量:
#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使环境变量生效
source .bashrc
验证Java环境变量是否生效
$PATH
java -version
javac -version
4.7.3.2 添加Hadoop环境变量
vi .bashrc
在最下方添加如下环境变量:
#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使环境变量生效
source .bashrc
验证Java环境变量是否生效
$PATH
对slave1和slave2进行相同配置
4.7.4 Hadoop配置
vi /usr/local/hadoop3/etc/hadoop/hadoop-env.sh
将配置${JAVA_HOME}为jdk绝对路径,比如 /usr/local/jdk1.8
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
查看输出结果
cat output/*
4.8 Hadoop伪分布式安装部署
4.8.1修改Hadoop集群的配置文件
4.8.1.1 修改hadoop-env.sh文件
cd /usr/local/hadoop3/etc/hadoop
将hadoop-env.sh中jdk8
# The java implementation to use.
export JAVA_HOME=/usr/local/jdk8
改为jdk1.8
# The java implementation to use.
export JAVA_HOME=/usr/local/jdk1.8
4.8.1.2 修改mapred-env.sh文件
将mapred-env.sh中jdk8
export JAVA_HOME=/usr/local/jdk8
改为jdk1.8
export JAVA_HOME=/usr/local/jdk1.8
4.8.1.3 修改yarn-env.sh文件
将yarn-env.sh文件中jdk8
# some Java parameters
export JAVA_HOME=/usr/local/jdk8
改为jdk1.8
# some Java parameters
export JAVA_HOME=/usr/local/jdk1.8
4.8.1.4 修改core-site.xml文件
将以下代码拷入core-site.xml文件
<?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文件
<?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文件
<?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
<?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文件中
bds1
bds2
bds3
bds4
bds5
改为
slave1
slave2
4.8.2 分发配置文件到slave1和slave2
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下的文件列表
./bin/hdfs namenode -format
使用ll命令查看当前目录/usr/local/hadoop3下的文件列表
可看到多出了hdfs文件夹
4.8.4 启动Hadoop集群和资源管理平台
./sbin/start-dfs.sh
使用ll命令查看可发现多了log日志文件夹
./sbin/start-yarn.sh
在浏览器地址栏输入172.16.116.110:50070可进入集群监控界面
停止资源管理平台和Hadoop集群
./sbin/stop-yarn.sh
./sbin/stop-dfs.sh
启动Hadoop集群和相关服务
./sbin/start-all.sh
启动后在3台服务器上查看
jps
在浏览器地址栏输入172.16.116.110:8088可进入资源管理界面
4.8.5 伪分布式部署测试:运行WordCount示例
cat README.txt >> a.txt
cat a.txt >> b.txt
cat b.txt >> word.txt
使用ll命令查看当前目录
rm -rf a.txt b.txt
使用ll命令查看当前目录
已经成功删除a.txt和b.txt
./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的最下方添加:
172.16.116.110
master
172.16.116.111
slave1
172.16.116.112
slave2
点击Download即可启动下载输出结果
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
修改权限
./bin/hadoop dfs -chmod -R 777 /user/hadoop/input
此时,可从HDFS文件系统中删除/user/hadoop/input文件夹中的文件了
最后
以上就是迷人小白菜为你收集整理的Ubuntu18.04 Hadoop 搭建Ubuntu18.04 Hadoop 搭建的全部内容,希望文章能够帮你解决Ubuntu18.04 Hadoop 搭建Ubuntu18.04 Hadoop 搭建所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复