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
 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的信息
可查看到有关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文件夹
可看到在文件系统中删除了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文件夹中的文件了
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值