Hadoop 3.1.3单机/伪分布式配置教程(基于deepin 20.1社区版)

参考资料:厦门大学 林子雨 Hadoop3.1.3安装教程_单机/伪分布式配置_Hadoop3.1.3/Ubuntu18.04(16.04)
配置过程中所需资源:
deepin 20.1镜像文件链接(提取码:t60l)
JDK 1.8安装文件链接(提取码:rw9b)
Hadoop 3.1.3安装文件链接 (提取码:b6om)

环境

本教程基于deepin 20.1社区版,使用虚拟机安装。
在这里插入图片描述

创建hadoop用户

按下快捷键Ctrl+Alt+T打开终端,创建hadoop用户,并且使用/bin/bash作为Shell:

$ sudo useradd -m hadoop -s /bin/bash

设置用户hadoop的密码:

$ sudo passwd hadoop

为用户hadoop添加管理员权限:

$ sudo adduser hadoop sudo

在这里插入图片描述

完成上述步骤后,点击右下角的关机图标,选择注销,返回登录界面,选择用户hadoop登录。

更新apt

按下快捷键Ctrl+Alt+T打开终端,更新apt:

$ sudo apt-get update

在这里插入图片描述

配置SSH无密码登录

我们可以使用下面的命令登录本机:

$ ssh localhost

但是这样登录是需要每次输入密码的,使用下面的命令配置成SSH无密码登录:

$ exit
$ cd ~/.ssh/
$ ssh-keygen -t rsa
$ cat ./id_rsa.pub >> ./authorized_keys

此时再使用ssh localhost命令,无需密码即可直接登录。
在这里插入图片描述

安装Java环境

JDK 1.8的安装文件保存在/home/hadoop/Downloads/目录下。
解压jdk-8u162-linux-x64.tar.gz文件:

$ cd /usr/lib
$ sudo mkdir jvm
$ cd ~/Downloads
$ sudo tar -zxvf ./jdk-8u162-linux-x64.tar.gz -C /usr/lib/jvm

在这里插入图片描述
配置环境变量:

$ cd ~
$ vim ~/.bashrc

.bashrc文件的开头位置添加如下内容:

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_162
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

保存退出vim,输入下面的命令使配置生效:

$ source ~/.bashrc

查看Java的版本信息,如果能返回Java的版本信息即为安装成功。

$ java -version

在这里插入图片描述

安装Hadoop 3.1.3

Hadoop 3.1.3的安装文件保存在/home/hadoop/Downloads/目录下。
解压hadoop-3.1.3.tar.gz文件,重命名,修改权限:

$ sudo tar -zxf ~/Downloads/hadoop-3.1.3.tar.gz -C /usr/local
$ cd /usr/local/
$ sudo mv ./hadoop-3.1.3/ ./hadoop
$ sudo chown -R hadoop ./hadoop

查看Hadoop的版本信息,如果能返回Hadoop的版本信息即为安装成功。

$ ./bin/hadoop version

在这里插入图片描述

Hadoop单机配置(非分布式)

Hadoop默认模式为非分布式模式(本地模式),非分布式即单Java进程,便于调试。下面运行grep例子,将input目录中的所有文件作为输入,筛选其中符合正则表达式dfs[a-z.]+的单词并统计出现的次数,将结果输出到output目录:

$ cd /usr/local/hadoop
$ mkdir ./input
$ cp ./etc/hadoop/*.xml ./input
$ ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar grep ./input ./output 'dfs[a-z.]+'
$ cat ./output/*

在这里插入图片描述
Hadoop默认不会覆盖结果文件,再次运行上面的实例需要先将./output删除。

Hadoop伪分布式配置

Hadoop的配置文件位于/usr/local/hadoop/etc/hadoop/,伪分布式需要修改2个配置文件core-site.xmlhdfs-site.xml
使用vim修改core-site.xml

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

将其中的

<configuration>
</configuration>

修改为下面配置

<configuration>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/usr/local/hadoop/tmp</value>
        <description>Abase for other temporary directories.</description>
    </property>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>

在这里插入图片描述

使用vim修改hdfs-site.xml

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

将其中的

<configuration>
</configuration>

修改为下面配置

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/usr/local/hadoop/tmp/dfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/usr/local/hadoop/tmp/dfs/data</value>
    </property>
</configuration>

在这里插入图片描述
配置完成后,执行NameNode的格式化:

$ ./bin/hdfs namenode -format

在这里插入图片描述
开启NameNode和DataNode守护进程并且判断是否启动成功:

$ ./sbin/start-dfs.sh
$ jps

在这里插入图片描述

运行Hadoop伪分布式实例

在HDFS中创建用户目录:

$ ./bin/hdfs dfs -mkdir -p /user/hadoop

./etc/hadoop中的xml文件作为输入文件复制到分布式文件系统中,即将/usr/local/hadoop/etc/hadoop复制到分布式文件系统中的/user/hadoop/input中。

$ ./bin/hdfs dfs -mkdir input
$ ./bin/hdfs dfs -put ./etc/hadoop/*.xml input

查看文件列表:

$ ./bin/hdfs dfs -ls input

伪分布式运行MapReduce作业的方式跟单机模式相同,区别在于伪分布式读取的是HDFS中的文件,可以将单机步骤中创建的本地input文件夹,输出结果output文件夹都删掉来验证这一点。

$ ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar grep input output 'dfs[a-z.]+'

查看运行结果:

$ ./bin/hdfs dfs -cat output/*

在这里插入图片描述
也可以将运行结果取回本地:

$ rm -r ./output
$ ./bin/hdfs dfs -get output ./output
$ cat ./output/*

Hadoop运行程序时,输出目录不能存在,否则会提示错误org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory hdfs://localhost:9000/user/hadoop/output already exists,因此若要再次执行,需要删除output文件夹。
关闭Hadoop:

$ ./sbin/stop-dfs.sh
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值