大数据-安装 Hadoop3.1.3 详细教程-单机/伪分布式配置(Centos)

Centos 7 安装 Hadoop3.1.3 详细教程

  • 前言
    • 00 需准备
    • 01 需掌握
  • 一、准备工作
    • 00 环境
    • 01 创建 hadoop 用户
    • 02 修改 hadoop 用户权限
    • 03 切换为 hadoop 用户
    • 04 更新源
    • 05 检查 SSH 服务
    • 06 配置 SSH 无密码登录
    • 07 安装 Java 环境
    • 08 安装 Hadoop 3.1.3
  • 二、Hadoop 单机配置(非分布式)
    • 00 测试运行实例
  • 三、Hadoop 伪分布式配置
    • 00 修改配置文件
      • ① 修改 core-site.xml 文件
      • ② 修改 hdfs-site.xml 文件
      • ③ 修改 hadoop-env.sh 配置文件
      • ④ NameNode 格式化
      • ⑤ 开启 NameNode 和 DataNode
    • 01 测试运行伪分布式实例
  • 四、小结

前言

工欲善其事必先利其器,在学习新的技术之前,我们必须搭建好一个适合的环境,但万事开头难,搭建环境的各种错误劝退了不少人,Pola 安装的过程中真的是错误百出,一度想放弃,但是Pola坚持下来了,并基于参考文章写出来这篇教程,本篇教程就是Pola在配置一台虚拟机的hadoop时写的,所以每一步都经过Pola测试,Pola有理由相信,你按照以下步骤去认真的进行Hadoop的单机配置或者伪分布式配置,是绝对不会出错的!!!

Pola在解决安装过程中的错误的时候没有怎么记录(错误太多了),所以如果你出现错误了可以评论或私信,因为你的问题Pola一定遇见过,不要怀疑Pola这个只要配置环境就必踩坑的天选之子!!!

00 需准备

  • 一台配置好网络连接(可ping通宿主机和外网)的CentOS 7系统的虚拟机
  • 连接宿主机和虚拟机的Xftp
  • JDK 1.8版本或1.8版本以上的安装包
  • hadoop 3.1.3 版本的安装包

01 需掌握

  • Linux 操作系统命令
  • Xftp 的使用

一、准备工作

00 环境

本教程基于 CentOS 7 64位 作为系统环境(其他系统也可以,因为安装步骤是一样的,但是需要切换成你对应系统的命令和文件)

01 创建 hadoop 用户

我们安装系统后登录使用的多是 root 用户,但其实这样并不安全。因此,在安装Hadoop前,我们要创建一个 hadoop 用户:

  • 以root用户登录打开终端窗口,输入以下命令创建 hadoop 用户并设置密码:
useradd hadoop # 创建hadoop用户
passwd hadoop # 设置hadoop用户的密码,按提示输入两次密码

⭐ 注意:密码需要输两次,如果提示无效,说明你的密码等级过低不安全,但是你不想换密码也可以继续输入密码进行确定
大数据-安装 Hadoop3.1.3 详细教程-单机/伪分布式配置(Centos)_第1张图片

02 修改 hadoop 用户权限

hadoop 用户是我们创建的普通用户,系统为了安全,会对普通用户的一些操作做限制,但这对我们配置环境来说不是很方便,因此我们需要为 hadoop 用户增加管理员的权限,之后便可以使用 sudo 命令进行一些限制操作:

  • 以root用户登录打开终端窗口,输入以下命令为hadoop用户增加管理员的权限:
vi /etc/sudoers 

打开 sudoers文件,找到 root ALL=(ALL) ALL,在其下面一行添加普通用户,我们的普通用户是 hadoop,则添加 hadoop ALL=(ALL) ALL,如下所示:
大数据-安装 Hadoop3.1.3 详细教程-单机/伪分布式配置(Centos)_第2张图片
⭐ 注意:退出关闭时使用 wq! 强制保存并退出,否则会提示 E45:'readonly' option is set(add ! to override)

03 切换为 hadoop 用户

之前的操作我们一直是以 root 用户的身份在登录,但是之后的操作我们需要切换为 hadoop 用户,输入以下命令切换用户:

su hadoop # 切换为hadoop用户登录

切换成功后,@localhost 前会显示当前登录的用户名
在这里插入图片描述

04 更新源

我们在下载软件时,可能会因为网络原因而下载失败,因此我们选择更新软件源,输入以下命令更新软件源:

sudo yum -y update # 更新源

⭐ 注意,我们现在登录的用户是hadoop,因此需要使用 sudo 命令来进行需要 root 权限的操作
大数据-安装 Hadoop3.1.3 详细教程-单机/伪分布式配置(Centos)_第3张图片

05 检查 SSH 服务

集群、单机模式都需要用到 SSH 登陆(类似于远程登陆,你可以登录某台 Linux 主机,并且在上面运行命令),在使用 SSH 登陆服务之前,我们需要先输入 yum list installed | grep openssh-server 命令检测 openssh-server 是否安装:

  • 如果已安装,则有以下输出:
    在这里插入图片描述
  • 如果未安装,则无任何输出,安装 openssh-server 命令为:sudo yum install openssh-server
    大数据-安装 Hadoop3.1.3 详细教程-单机/伪分布式配置(Centos)_第4张图片

06 配置 SSH 无密码登录

确定 openssh-server 已安装后,我们就可以愉快的使用 SSH 服务了,输入 ssh localhost 命令登陆本机:
大数据-安装 Hadoop3.1.3 详细教程-单机/伪分布式配置(Centos)_第5张图片
按照以上的登陆方式:每次登陆都需要输入密码,很不方便,因此我们需要配置成SSH无密码登陆,更方便一点。具体操作如下:

  • 输入 exit 命令退出之前的 ssh,回到我们原先的终端窗口,然后利用 ssh-keygen 生成密钥,并将密钥加入到授权中:
exit                           # 退出之前的 ssh localhost
cd ~/.ssh/                     # 若没有该目录,请先执行一次ssh localhost
ssh-keygen -t rsa              # 会有提示,一直按回车即可
cat ./id_rsa.pub >> ./authorized_keys  # 加入授权
chmod 600 authorized_keys      # 更改文件权限

大数据-安装 Hadoop3.1.3 详细教程-单机/伪分布式配置(Centos)_第6张图片
之后再输入 ssh localhost 命令登陆时,就无需再输入密码,如下所示:
ssh 无密码登录

07 安装 Java 环境

⭐ 注意:Hadoop3.1.3 需要 JDK 版本在 1.8 及以上

第一步,通过 Xftp 将下载好的 jdk 文件上传到 hadoop 用户的工作目录(即 /home/hadoop )下,如下图所示:
大数据-安装 Hadoop3.1.3 详细教程-单机/伪分布式配置(Centos)_第7张图片
第二步,执行以下命令解压缩JDK文件(注意:当前登录用户名是hadoop),如下所示:

cd /home/hadoop # 进入用户家目录
sudo mkdir -p /usr/lib/jvm # 创建/usr/lib/jvm目录用来存放JDK文件
sudo tar -zxvf jdk-8u131-linux-x64.tar.gz -C /usr/lib/jvm # 把JDK文件解压到/usr/lib/jvm目录下

在这里插入图片描述
JDK 文件解压成功后,可以执行以下命令进行查看:

cd /usr/lib/jvm # 进入/usr/lib/jvm目录下
ls #查看当前目录(即/usr/lib/jvm)的文件

大数据-安装 Hadoop3.1.3 详细教程-单机/伪分布式配置(Centos)_第8张图片
可以看到,/usr/lib/jvm 目录下有一个 jdk1.8.0_131 目录

第三步,执行以下命令配置环境变量(注意:当前登录用户名是 hadoop),如下所示:

cd ~ # 进入用户家目录,注意:~ 等价于 /home/hadoop
sudo vi ~/.bash_profile # 编辑当前hadoop用户的环境变量配置文件(该文件只影响当前用户)

打开文件后,在文件末尾处添加以下内容( jdk 版本根据个人安装版本进行填写),保存并退出:

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

打开当前hadoop用户的环境配置文件
大数据-安装 Hadoop3.1.3 详细教程-单机/伪分布式配置(Centos)_第9张图片
继续执行以下命令使环境变量配置生效:

source ~/.bash_profile

然后可以执行以下命令查看是否安装成功:

java -version

如果屏幕上返回如下信息,则说明安装成功:
在这里插入图片描述

08 安装 Hadoop 3.1.3

⭐ 注意:我们安装的是 Hadoop3.1.3

第一步,通过 Xftp 将下载好的 Hadoop3.1.3 文件上传到 hadoop 用户的工作目录(即 /home/hadoop )下,如下图所示:
大数据-安装 Hadoop3.1.3 详细教程-单机/伪分布式配置(Centos)_第10张图片
第二步,执行以下命令解压缩 hadoop3.1.3 文件(注意:当前登录用户名是 hadoop),如下所示:

sudo tar -zxf ~/hadoop-3.1.3.tar.gz -C /usr/local # 解压到/usr/local中
cd /usr/local/ # 进入/usr/local目录下                     
sudo mv ./hadoop-3.1.3/ ./hadoop # 将hadoop-3.1.3文件夹名改为hadoop
sudo chown -R hadoop ./hadoop # 修改文件权限

大数据-安装 Hadoop3.1.3 详细教程-单机/伪分布式配置(Centos)_第11张图片
Hadoop 解压后即可使用,输入以下命令检查 Hadoop 是否可用,成功则会显示 Hadoop 版本信息:

cd /usr/local/hadoop # 进入/usr/local/hadoop目录
./bin/hadoop version # 查看hadoop版本信息

大数据-安装 Hadoop3.1.3 详细教程-单机/伪分布式配置(Centos)_第12张图片

二、Hadoop 单机配置(非分布式)

00 测试运行实例

Hadoop 默认模式为非分布式模式(本地模式),无需进行其他配置即可运行。即 Hadoop 安装成功后即可使用。我们可以执行一些例子来感受一下 Hadoop 的运行。Hadoop 附带了丰富的例子,运行以下命令可以看到所有例子,包括 wordcount、terasort、join、grep 等:

./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar

我们选择运行 grep 例子,我们将 input 文件夹中的所有文件作为输入,筛选其中符合正则表达式 dfs[a-z.]+ 的单词并统计单词出现的次数,然后将结果输出到 output 文件夹中,具体执行命令如下:

cd /usr/local/hadoop # 进入/usr/local/hadoop目录
mkdir ./input # 在当前目录下,创建input目录
cp ./etc/hadoop/*.xml ./input # 将配置文件作为输入复制到input目录下
./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar grep ./input ./output 'dfs[a-z.]+' # 运行grep实例
cat ./output/* # 查看运行结果

在这里插入图片描述
大数据-安装 Hadoop3.1.3 详细教程-单机/伪分布式配置(Centos)_第13张图片

三、Hadoop 伪分布式配置

00 修改配置文件

Hadoop 可以在单节点上以伪分布式的方式运行,Hadoop 进程以分离的 Java 进程来运行,节点既作为 NameNode 也作为 DataNode,同时,其读取的是 HDFS 中的文件。

Hadoop 的配置文件位于 /usr/local/hadoop/etc/hadoop/ 中,伪分布式需要修改 2 个配置文件 core-site.xml 和 hdfs-site.xml 。Hadoop的配置文件是 xml 格式,每个配置以声明 property 的 name 和 value 的方式来实现。

① 修改 core-site.xml 文件

执行以下命令修改 core-site.xml 文件:

cd /usr/local/hadoop/etc/hadoop/ # 进入/usr/local/hadoop/etc/hadoop/目录
sudo vi core-site.xml # 编辑 core-site.xml 文件

在这里插入图片描述
打开 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>

大数据-安装 Hadoop3.1.3 详细教程-单机/伪分布式配置(Centos)_第14张图片

② 修改 hdfs-site.xml 文件

执行以下命令修改 hdfs-site.xml 文件:

# 注意当前目录是/usr/local/hadoop/etc/hadoop/目录
sudo vi hdfs-site.xml # 编辑 hdfs-site.xml 文件

打开 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>

在这里插入图片描述
大数据-安装 Hadoop3.1.3 详细教程-单机/伪分布式配置(Centos)_第15张图片

③ 修改 hadoop-env.sh 配置文件

执行以下命令修改 hadoop-env.sh 文件:

# 注意当前目录是/usr/local/hadoop/etc/hadoop/目录
sudo vi hadoop-env.sh # 编辑 hadoop-env.sh 文件

在 hadoop-env.sh 文件里找到 # export JAVA_HOME= 这行,如下所示:
大数据-安装 Hadoop3.1.3 详细教程-单机/伪分布式配置(Centos)_第16张图片
将其修改为JAVA安装路径的具体地址,如下所示:
大数据-安装 Hadoop3.1.3 详细教程-单机/伪分布式配置(Centos)_第17张图片

④ NameNode 格式化

以上配置完成后,执行以下命令进行 NameNode 的格式化:

cd /usr/local/hadoop # 进入/usr/local/hadoop目录
./bin/hdfs namenode -format # 执行 NameNode 的格式化

在这里插入图片描述
成功的话,会看到 successfully formatted 的提示,具体返回信息类似以下内容:
大数据-安装 Hadoop3.1.3 详细教程-单机/伪分布式配置(Centos)_第18张图片

⑤ 开启 NameNode 和 DataNode

NameNode 格式化后,接着执行以下命令开启 NameNode 和 DataNode 守护进程:

cd /usr/local/hadoop # 进入/usr/local/hadoop目录
./sbin/start-dfs.sh # 注意:start-dfs.sh 是个完整的可执行文件,中间没有空格

在这里插入图片描述
然后执行以下 jps 命令判断是否成功启动,若成功启动则会列出以下进程:NameNodeDataNodeSecondaryNameNode大数据-安装 Hadoop3.1.3 详细教程-单机/伪分布式配置(Centos)_第19张图片
成功启动后,可以在虚拟机的浏览器上访问 Web 界面 http://localhost:9870 查看 NameNode 和 Datanode 信息,还可以在线查看 HDFS 中的文件,也可以将localhost替换为虚拟机的IP地址,在本机的浏览器上访问 Web 界面,例如我的虚拟机的IP地址是192.168.91.150,我就可以将http://localhost:9870替换为http://192.168.91.150:9870,然后在我本机上进行访问,如下所示:
大数据-安装 Hadoop3.1.3 详细教程-单机/伪分布式配置(Centos)_第20张图片

01 测试运行伪分布式实例

之前的单机模式,grep 例子里读取的是本地数据,而伪分布式读取的则是 HDFS 上的数据。要使用 HDFS,首先需要在 HDFS 中创建用户目录,接着将./etc/hadoop中的xml文件作为输入文件复制到分布式文件系统中,即将/usr/local/hadoop/etc/hadoop复制到分布式文件系统中的/user/hadoop/input中。我们使用的是 hadoop 用户,并且已创建相应的用户目录/user/hadoop,因此在命令中就可以使用相对路径如input,其对应的绝对路径就是/user/hadoop/input,具体执行命令如下:

cd /usr/local/hadoop # 进入/usr/local/hadoop目录
./bin/hdfs dfs -mkdir -p /user/hadoop # 在 HDFS 中创建用户目录
./bin/hdfs dfs -mkdir input # 在用户目录下创建input目录
./bin/hdfs dfs -put ./etc/hadoop/*.xml input # 将`./etc/hadoop`中的`xml`文件作为输入文件复制到input目录

大数据-安装 Hadoop3.1.3 详细教程-单机/伪分布式配置(Centos)_第21张图片
复制完成后,可以通过以下命令查看文件列表:

./bin/hdfs dfs -ls input # 查看input目录的文件列表

大数据-安装 Hadoop3.1.3 详细教程-单机/伪分布式配置(Centos)_第22张图片
测试实例我们仍旧选择 grep 例子,伪分布式运行 MapReduce 作业的方式跟单机模式相同,区别在于伪分布式读取的是 HDFS 中的文件,创建的也是 HDFS 中的文件(可以将单机步骤中创建的本地 input 文件夹和输出结果 output 文件夹都删掉来验证这一点),测试运行完 grep 实例后查看运行结果(查看的是位于 HDFS 中的输出结果),具体执行命令如下:

./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar grep input output 'dfs[a-z.]+' # 运行测试实例,注意当前目录是/usr/local/hadoop目录
./bin/hdfs dfs -cat output/* # 查看位于 HDFS 中的输出结果

⭐注意:我们更改了一些配置文件,所以运行结果与单机的运行结果不同
大数据-安装 Hadoop3.1.3 详细教程-单机/伪分布式配置(Centos)_第23张图片

四、小结

至此,我们完成了CentOS的Hadoop3.1.3 版本的单机配置和伪分布式配置,总结起来安装步骤就是文章开头显示的目录内容,但是需要注意,配置过程中一定要细心大胆,特别是用户身份切换、目录切换这些小细节,千万不要直接使用root用户直接进行操作,如果配置出错,不要着急,回过头看看你之前的配置是不是漏掉了哪些细节,真的解决不了的话,评论或者私信Pola,Pola帮你一起解决!

[参考文章:Hadoop3.1.3安装教程_单机/伪分布式配置_Hadoop3.1.3/Ubuntu18.04(16.04)]

你可能感兴趣的:(大数据技术原理与应用,hadoop,分布式,伪分布式,单机配置,Centos)