一、实验内容与要求

1、下载安装虚拟机软件;下载Ubuntu镜像文件,安装Ubuntu虚拟机;

2、在Ubuntu系统中创建用户、更新APT、安装SSH并配置SSH无密码登录、安装Java环境、配置PATH环境变量;

3、下载Hadoop并解压;

4、修改配置文件;

5、名称节点格式化;

6、启动Hadoop,JPS查看是否启动成功;

7、运行测试例子;

8、在安装好的Hadoop伪分布式环境中操作HDFS命令;

9、关闭Hadoop。

二、实验步骤

1、下载安装虚拟机软件VMware,如图1至图6所示;

下载Ubuntu镜像文件,访问https://mirrors.aliyun.com/ubuntu-releases/18.04.6/,进行下载,如图7所示;

安装Ubuntu虚拟机。

Hadoop伪分布式安装实验||虚拟机软件VMware安装及Hadoop伪分布式环境中操作HDFS命令_hadoop


图1

Hadoop伪分布式安装实验||虚拟机软件VMware安装及Hadoop伪分布式环境中操作HDFS命令_Hadoop_02


图2

Hadoop伪分布式安装实验||虚拟机软件VMware安装及Hadoop伪分布式环境中操作HDFS命令_hadoop_03

图3


Hadoop伪分布式安装实验||虚拟机软件VMware安装及Hadoop伪分布式环境中操作HDFS命令_hadoop_04

图4

Hadoop伪分布式安装实验||虚拟机软件VMware安装及Hadoop伪分布式环境中操作HDFS命令_HDFS_05

图5

Hadoop伪分布式安装实验||虚拟机软件VMware安装及Hadoop伪分布式环境中操作HDFS命令_HDFS_06

图6

至此,VMware安装成功。


接下来开始下载Ubuntu镜像文件,选择unbuntu-18.04.6-desktop-amd64.iso版本,如图7绿色方框所示;

Hadoop伪分布式安装实验||虚拟机软件VMware安装及Hadoop伪分布式环境中操作HDFS命令_hadoop_07

图7

安装Linux操作系统:

步骤一:新建一个虚拟机,按安装向导提示操作,如图8至图13所示;

 其中,将刚刚下载好的镜像文件安装到虚拟机中,如图9所示;

设置磁盘大小,如图12所示;

Hadoop伪分布式安装实验||虚拟机软件VMware安装及Hadoop伪分布式环境中操作HDFS命令_hadoop_08

图8

Hadoop伪分布式安装实验||虚拟机软件VMware安装及Hadoop伪分布式环境中操作HDFS命令_Hadoop_09

图9

Hadoop伪分布式安装实验||虚拟机软件VMware安装及Hadoop伪分布式环境中操作HDFS命令_Hadoop_10


图11

Hadoop伪分布式安装实验||虚拟机软件VMware安装及Hadoop伪分布式环境中操作HDFS命令_HDFS_11

图12

Hadoop伪分布式安装实验||虚拟机软件VMware安装及Hadoop伪分布式环境中操作HDFS命令_hadoop_12

图13

点击完成后,进入Ubuntu界面,如图14所示;

Hadoop伪分布式安装实验||虚拟机软件VMware安装及Hadoop伪分布式环境中操作HDFS命令_Hadoop_13

图14


等待加载完成,如图15所示;

Hadoop伪分布式安装实验||虚拟机软件VMware安装及Hadoop伪分布式环境中操作HDFS命令_HDFS_14

图15

Hadoop伪分布式安装实验||虚拟机软件VMware安装及Hadoop伪分布式环境中操作HDFS命令_hadoop_15

图16

加载完成后,登录即可。

2、在Ubuntu系统中创建用户、更新APT、安装SSH并配置SSH无密码登录、安装Java环境、配置PATH环境变量;

步骤一:

打开一个终端(可以使用快捷键 Ctrl+Alt+T),使用如下命令创建 一个用户hadoop:

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

使用如下命令为hadoop用户设置密码:

$ sudo passwd hadoop

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

$ sudo adduser hadoop sudo

sudo是Linux系统管理指令,管理员可以授权给一些普通用户去执行一些需要root权限执行的操作。这样不仅减少了root用户的登录和管理时间,同样也提高了安全性。后面在执行软件安装时,都是

采用hadoop用户登录,而不是root用户登录,因此,使用hadoop用户登录Linux系统以后,当需要执行只有root用户有权限执行的命令时,都要在命令前面加上sudo,才能够顺利执行,如果不加上sudo,就会被拒绝执行。

当使用sudo命令时,会要求输入当前用户的密码。需要注意的是,Windows系统中,用户输入密码,都会在屏幕上显示“*”号作为反馈,但是,在Linux系统中,当输入密码时,不会在屏幕上显示“*”号作为反馈,这时,不要误以为系统死机或者键盘出了问题,只要输完密码后回车即可。

Linux系统的根目录“/”下,存在很多个目录,其中有两个目录,一个是 “/home”目录,一个是“/usr”目录。“/home”目录包含了各个用户的用户目录,每当在Linux系统中新建一个普通用户时,系统就会自动为这个用户创建用户主目录(主文件夹)。


“/usr”目录是“Unix Software Resource”的简写,表示这里是各种软 件安装的目录。对于“/usr”目录而言,只需要关注它下面的子目录 “/usr/local”,一般由用户安装的软件都建议安装到该目录下。

Linux系统对文件权限有着严格的规定,如果一个用户不具备权限,将无法访问目录及其下面的文件。比如,使用hadoop用户登录Linux系统以后, 从 网 络 上 下 载 了“/usr/local/”目录下,会得到一个类似“/usr/local/hbase”这样的目录,这时,hadoop用户并不是“/usr/local/hbase”这个目录的所有者,无法对该目录进行相关操作,从而无法正常使用HBase。这时,就必须采用chown命令进行授权,让hadoop用户拥有对该目录的权限,具体命令如下:

$ sudo chown -R hadoop /usr/local/hbase

APT是一个非常优秀的软件管理工具,Linux系统采用APT来安装和管理各种软件。安装成功Linux系统以后,需要及时更新APT软件,否则,后续一些软件可能无法正常安装。登录Linux系统,打开一个终端(可以使用快捷键Ctrl+Alt+T),进入Shell命令提示符状态,然后输入下面命令:

$ sudo apt-get update

Ubuntu中终端输入的命令一般都是使用英文输入。但是,有时候也会需要输入中文。Linux系统的中英文输入法的切换方式是使用键盘“shift”键来切换,或者,也可以点击系统桌面顶部菜单的输入法按钮进行切换。中文输入法可以用Ubuntu自带的Sunpinyin,不需要额外安装中文输入法。

执行下面命令完成vim编辑器的安装:

$ sudo apt-get install vim


可以执行下面命令创建一个word.txt文件:

$ cd ~
$ vim word.txt

从键盘输入“

:wq

”三个英文字母,然后回车,表示保存文件并退出。


步骤二:更新APT

为了确保Hadoop安装过程顺利进行,用hadoop用户登录Linux系统后打开一个终端,执行下面命令更新APT软件:

sudo apt-get update


步骤三:安装SSH、配置SSH无密码登录

Ubuntu默认已安装了SSH客户端,因此,这里还需要安装SSH服务端,请在Linux的终端中执行以下命令:

$ sudo apt-get install openssh-server

安装后,可以使用如下命令登录本机:

$ ssh localhost

执行该命令后会出现如图所示的提示信息(SSH首次登录提示),输入“yes”,然后按提示输入密码hadoop,就登录到本机了。

首先,输入命令“exit”退出刚才的SSH,就回到了原先的终端窗口;然后,可以利用ssh-keygen生成密钥,并将密钥加入到授权中,命令如下:

$ cd ~/.ssh/ #

若没有该目录,请先执行一次

ssh localhost
$ ssh-keygen -t rsa #

会有提示,都按回车即可

$ cat ./id_rsa.pub >> ./authorized_keys #

加入授权

再执行

ssh localhost

命令,无需输入密码就可以直接登录了


步骤四:安装Java环境

在Ubuntu虚拟机中从

https://www.oracle.com/java/technologies/downloads/#java8-linux下载JDK 1.8以上版本。

执行如下命令创建“/usr/lib/jvm”目录用来存放JDK文件:

$cd /usr/lib
$sudo mkdir jvm #创建/usr/lib/jvm目录用来存放JDK文件

执行如下命令对安装文件进行解压缩:

$cd ~ #进入hadoop用户的主目录
$cd Downloads
$sudo tar -zxvf ./jdk-8u162-linux-x64.tar.gz -C /usr/lib/jvm

下面继续执行如下命令,设置环境变量:

$vim ~/.bashrc
s

上面命令使用vim编辑器打开了hadoop这个用户的环境变量配置文件,请在这个文件的开头位置,添加如下几行内容:

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

保存.bashrc文件并退出vim编辑器。然后,继续执行如下命令让.bashrc文件的配置立即生效

$source ~/.bashrc

这时,可以使用如下命令查看是否安装成功:

$java -version

如果能够在屏幕上返回如下信息,则说明安装成功:

java version "1.8.0_162"
Java(TM) SE Runtime Environment (build 1.8.0_162-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)

可以看到,此处并没有安装成功,根据提示安装或升级以下内容:

sudo apt install default-jre

sudo apt install default-jre

sudo apt install openjdk-8-jre-headless

接下来再重复这个动作,查看是否安装成功,若还未成功;

在配置文件中,Java版本号不一致,改一下即可;

可以看到Java环境已安装成功。


步骤五:配置PATH变量

首先使用vim编辑器打开“~/.bashrc”这个文件,然后,在这个文件的

最前面位置加入如下单独一行:

export PATH=$PATH:/usr/local/hadoop/sbin

在后面的实验过程中,如果要继续把其他命令的路径也加入到PATH变量中,也需要继续修改“~/.bashrc”这个文件。当后面要继续加入新的路径时,只要用英文冒号“:”隔开,把新的路径加到后面即可,比如,如果要继续把“/usr/local/hadoop/bin”路径增加到PATH中,只要继续追加到后面,如下所示:

export PATH=$PATH:/usr/local/hadoop/sbin:/usr/local/hadoop/bin

添加后,执行命令“source ~/.bashrc”使设置生效。设置生效后,在任何目录下启动Hadoop,都只要直接输入start-dfs.sh命令即可,同理,停止Hadoop,也只需要在任何目录下输入stop-dfs.sh命令即可。


3、下载Hadoop并解压;

Hadoop包括三种安装模式:

单机模式:只在一台机器上运行,存储是采用本地文件系统,没有采用分布式文件系统HDFS;

伪分布式模式:存储采用分布式文件系统HDFS,但是,HDFS的名称节点和数据节点都在同一台机器上;

分布式模式:存储采用分布式文件系统HDFS,而且,HDFS的名称节点和数据节点位于不同机器上。

以Hadoop3.1.3为例,可以到Hadoop官网下载安装文件

http://mirrors.cnnic.cn/apache/hadoop/common/)

使用hadoop用户登录Linux系统,打开一个终端,执行如下命令:

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

Hadoop解压后即可使用,可以输入如下命令来检查 Hadoop是否可用,成功

则会显示 Hadoop版本信息:

$ cd /usr/local/hadoop
$ ./bin/hadoop version

Hadoop默认模式为非分布式模式(本地模式),无需进行其他配置即可

运行。Hadoop附带了丰富的例子,运行如下命令可以查看所有例子:

$ cd /usr/local/hadoop
$ ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar

这里选择运行grep例子:

$ cd /usr/local/hadoop
$ mkdir input
$ cp ./etc/hadoop/*.xml ./input # 将配置文件复制到input目录下
$ ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduceexamples-*.jar grep ./input ./output 'dfs[a-z]+'
$ cat ./output/* # 查看运行结果


4、Hadoop伪分布式安装修改配置文件;

修改配置文件

Hadoop 的配置文件位于 /usr/local/hadoop/etc/hadoop/ 中,伪分布式需要修改2个配置文件 core-site.xml 和 hdfs-site.xml 。

Hadoop的配置文件是 xml 格式,每个配置以声明 property 的name 和 value 的方式来实现。

修改配置文件 core-site.xml (通过 gedit 编辑会比较方便: gedit ./etc/hadoop/core-site.xml);

修改以后,core-site.xml文件的内容如下:

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

同样,需要修改配置文件hdfs-site.xml,修改后的内容如下:

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


5、名称节点格式化;

修改配置文件以后,要执行名称节点的格式化,命令如下:

$ cd /usr/local/hadoop
$ ./bin/hdfs namenode -format

如果格式化成功,会看到“successfully formatted”的提示信息


6、启动Hadoop,JPS查看是否启动成功;

执行下面命令启动Hadoop:

$ cd /usr/local/hadoop
$ ./sbin/start-dfs.sh #start-dfs.sh是个完整的可执行文件,中间没有空格

如果出现如图所示的SSH提示,输入yes即可:

在终端中输入“jps”命令,如启动了名称节点、数据节点和第二名称节点

的进程,说明Hadoop启动成功。


7、运行测试例子;

使用Web界面查看HDFS信息

在Firefox浏览器 输入

localhost:9870;

8、在安装好的Hadoop伪分布式环境中操作HDFS命令;

运行Hadoop伪分布式实例

要使用HDFS,首先需要在HDFS中创建用户目录,命令如下:

$ cd /usr/local/hadoop
$ ./bin/hdfs dfs -mkdir -p /user/hadoop

接着需要把本地文件系统的“/usr/local/hadoop/etc/hadoop”目录中

的所有xml文件作为输入文件,复制到分布式文件系统HDFS中的

“/user/hadoop/input”目录中,命令如下:

$ cd /usr/local/hadoop
$ ./bin/hdfs dfs -mkdir input #在HDFS中创建hadoop用户对应的input目录
$ ./bin/hdfs dfs -put ./etc/hadoop/*.xml input #把本地文件复制到HDFS中

现在就可以运行Hadoop自带的grep程序,命令如下:

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

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

删除前面已有的本地的;

运行结束后,可以通过如下命令查看HDFS中的output文件夹中的内容:

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


9、关闭Hadoop。

如果要关闭Hadoop,可以执行下面命令:

$ cd /usr/local/hadoop
$ ./sbin/stop-dfs.sh

完毕。