
【作者主页】Francek Chen
【专栏介绍】⌈ ⌈ ⌈大数据技术原理与应用 ⌋ ⌋ ⌋专栏系统介绍大数据的相关知识,分为大数据基础篇、大数据存储与管理篇、大数据处理与分析篇、大数据应用篇。内容包含大数据概述、大数据处理架构Hadoop、分布式文件系统HDFS、分布式数据库HBase、NoSQL数据库、云数据库、MapReduce、Hadoop再探讨、数据仓库Hive、Spark、流计算、Flink、图计算、数据可视化,以及大数据在互联网领域、生物医学领域的应用和大数据的其他应用。
【GitCode】专栏资源保存在我的GitCode仓库:https://gitcode.com/Morse_Chen/BigData_principle_application。
文章目录
详细安装教程参考文章:大数据存储技术(1)------Hadoop简介及安装配置
一、Linux虚拟机的安装
1. Ubuntu Kylin发行版
本文教程采用的 Linux 发行版是 Ubuntu,同时,为了更好支持汉化(比如,更容易输入中文),这里采用了 Ubuntu Kylin 发行版。Ubuntu Kylin 是针对中国用户定制的 Ubuntu 发行版本,里面包含了一些中国特色的软件(比如中文拼音输入法),并根据中国人的使用习惯,对系统做了一些优化。
2. Ubuntu Kylin 16.04 LTS
Ubuntu Kylin 较新的版本是 22.04 LTS,但是,在实际使用过程中发现,该版本对计算机的资源消耗较多,在使用虚拟机方式安装时,系统运行起来速度较慢。因此,本文教程选择较低的版本 Ubuntu Kylin 16.04 LTS,这个版本不仅降低了对计算机配置的要求,也可以保证大数据各种软件的顺利安装和运行,帮助大家很好完成本教程的各个实验。
3. VMware
常用的虚拟机软件包括 VMware 和 VirtualBox 等,VirtualBox 属于开源软件,免费,VMware 属于商业软件,需要付费。从易用性的角度,VMware 要比 VirtualBox 更胜一筹,因此,本教程采用 VMware。
二、创建Hadoop用户
如果安装 Ubuntu 的时候不是用的 "hadoop" 用户,那么需要增加一个名为 hadoop 的用户。
首先输入如下命令创建新用户 :
bash
sudo useradd --m hadoop --s /bin/bash
上面这条命令创建了可以登陆的 hadoop 用户,并使用/bin/bash作为 shell。
接着使用如下命令设置密码,可简单设置为 hadoop,按提示输入两次密码:
bash
sudo passwd hadoop
可为 hadoop 用户增加管理员权限,方便部署,避免一些对新手来说比较棘手的权限问题:
bash
sudo adduser hadoop sudo
三、更新apt和安装Vim编辑器
用 hadoop 用户登录 Ubuntu 操作系统后,需要首先更新一下 apt,从而确保后续可以顺利安装一些软件。命令如下:
bash
sudo apt-get update
在 Ubuntu 操作系统中,可以使用 Vim 编辑器来创建文件和修改文件。执行如下命令安装 Vim 编辑器:
bash
sudo apt-get install vim
安装软件时若需要确认,在提示处输入"y"并按"Enter"键即可。
四、安装SSH和配置SSH无密码登录
(一)SSH是什么?
1、含义:SSH 为 Secure Shell 的缩写,是建立在应用层和传输层基础上的安全协议。SSH 是目前较可靠、专为远程登录会话和其他网络服务提供安全性的协议。
2、作用:利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH 最初是 UNIX 系统上的一个程序,后来又迅速扩展到其他操作平台。
3、结构:SSH 是由客户端和服务端的软件组成,服务端是一个守护进程(daemon),它在后台运行并响应来自客户端的连接请求,客户端包含ssh程序以及像scp(远程拷贝)、slogin(远程登陆)、sftp(安全文件传输)等其他的应用程序。
(二)配置SSH的原因
- Hadoop 名称节点(NameNode)需要启动集群中所有机器的 Hadoop 守护进程;
- 这个过程需要通过 SSH 登录来实现;
- Hadoop 并没有提供 SSH 输入密码登录的形式;
- 为了能够顺利登录每台机器,需要将所有机器配置为名称节点可以无密码登录它们。
(三)安装配置步骤
为了实现 SSH 无密码登录,需要在 Ubuntu 操作系统上安装 SSH 服务端和客户端。Ubuntu 操作系统默认已安装了 SSH 客户端,因此这里只需要安装 SSH 服务端,命令如下:
bash
sudo apt-get install openssh-server
安装以后,可以使用如下命令登录本机:
bash
ssh localhost
出现提示后,输入"yes"并按"Enter"键,再输入密码并按"Enter"键,就可以登录到本机了。但是,这样登录是需要每次都输入密码的,因此,我们需要配置成 SSH 无密码登录。
退出刚才的 SSH 登录,然后利用 ssh-keygen 生成密钥,并将密钥加入授权,具体命令如下:
bash
exit
cd ~/.ssh/
ssh-keygen -t rsa
cat ./id_rsa.pub >> ./authorized_keys
此时再用 ssh localhost 命令,无须输入密码就可以直接登录了。对于 Ubuntu 操作系统而言,到这里 SSH 就配置好了。
五、安装Java环境
由于 Hadoop 本身是使用 Java 编写的,因此,Hadoop 的开发和运行都需要 Java 的支持,对于 Hadoop 3.3.5 而言,其要求使用 JDK 1.8 或者更新的版本。
访问 Oracle 官网下载 JDK 1.8 安装包。这里假设下载得到的 JDK 安装文件为 jdk-8u371-linux-x64.tar.gz,并且保存在 Ubuntu 操作系统的"/home/hadoop/Downloads/"目录下。
执行如下命令创建"/usr/lib/jvm"目录来存放 JDK 文件:
bash
cd /usr/lib
sudo mkdir jvm #创建/usr/lib/jvm目录来存放JDK文件
执行如下命令对安装文件进行解压缩:
bash
cd ~ #进入hadoop用户的主目录
cd Downloads
sudo tar -zxvf ./jdk-8u371-linux-x64.tar.gz -C /usr/lib/jvm
下面继续执行如下命令,设置环境变量:
bash
vim ~/.bashrc
上面命令使用 Vim 编辑器打开了"hadoop"这个用户的环境变量配置文件,请在这个文件的开头位置,添加如下几行内容:
bash
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_371
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
保存 .bashrc 文件并退出 Vim 编辑器。然后,继续执行如下命令让 .bashrc 文件的配置立即生效:
bash
source ~/.bashrc
这时,可以使用如下命令查看是否安装成功:
xml
java -version
如果屏幕上能显示如下返回信息,则说明安装成功:
xml
java version "1.8.0_371"
Java(TM) SE Runtime Environment (build 1.8.0_371-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.371-b11, mixed mode)
六、安装单机Hadoop
在采用单机模式时,Hadoop 只在一台机器上运行,存储采用本地文件系统,没有采用分布式文件系统 HDFS。这里使用的 Hadoop 版本为 3.3.5。
下载地址为:https://archive.apache.org/dist/hadoop/core/hadoop-3.3.5/
在页面中选择 hadoop-3.3.5.tar.gz 进行下载即可。这里假设安装文件被保存到了 Ubuntu 操作系统的"~/Downloads"目录下,可以执行如下命令进行安装:
bash
sudo tar --zxf ~/Downloads/hadoop-3.3.5.tar.gz -C /usr/local
cd /usr/local/
sudo mv ./hadoop-3.3.5/ ./hadoop # 将目录名称修改为hadoop
sudo chown -R hadoop ./hadoop # 修改目录权限
然后,可以运行如下命令查看 Hadoop 的版本信息:
bash
./bin/hadoop version
此时,屏幕上会显示如下提示信息:
bash
Hadoop 3.3.5
......
This command was run using /usr/local/hadoop/share/hadoop/common/hadoop-common- 3.3.5.jar
Hadoop 文档中还附带了一些例子供我们测试,现在可以运行 Grep 实例来检测一下 Hadoop 是否安装成功。
首先,在 Hadoop 安装目录下新建 input 目录,用来存放输入数据,命令如下:
bash
cd /usr/local/hadoop
mkdir input
然后,将"/usr/local/hadoop/etc/hadoop"目录下的配置文件复制到 input 目录,命令如下:
bash
cp ./etc/hadoop/*.xml ./input
接下来,执行如下代码运行 Grep 实例:
bash
./bin/hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.5.jar grep ./input ./output 'dfs[a-z.]+'
最后,可以执行以下命令查看输出数据:
bash
cat ./output/*
运行上面命令后,可以得到以下结果:
bash
1 dfsadmin
1 dfs.replication
1 dfs.namenode.name.dir
1 dfs.datanode.data.dir
七、Hadoop伪分布式安装
修改后的 core-site.xml 文件的内容如下:
bash
<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 文件的内容如下:
bash
<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>
在配置完成后,首先需要初始化文件系统,由于 Hadoop 的很多工作是在自带的 HDFS 上完成的,因此,需要将文件系统初始化之后才能进一步执行计算任务。执行初始化的命令如下:
bash
cd /usr/local/hadoop
./bin/hdfs namenode -format
如果格式化成功,会看到"successfully formatted"的提示信息(如图所示)。

图1 执行名称节点格式化后的提示信息
文件系统初始化成功以后,可以用如下命令启动 HDFS:
bash
cd /usr/local/hadoop
./sbin/start-dfs.sh
根据启动过程中屏幕上出现的提示信息可以知道,启动过程的所有启动信息都写入了对应的日志文件。如果出现启动错误,则可以在日志中查看错误原因。
启动之后,可以输入 jps 指令查看所有的 Java 进程。如果 HDFS 启动成功,可以得到如下类似结果:
bash
jps
4011 jps
3516 NameNode
3852 SecondaryNameNode
3638 DataNode
此时,可以访问 Web 页面(http://localhost:9870)来查看 Hadoop 的信息。
接下来,执行如下命令,在 HDFS 中创建 hadoop 用户的用户目录:
bash
cd /usr/local/hadoop
./bin/hdfs dfs -mkdir -p /user/hadoop
然后,在 HDFS 的"/user/hadoop"目录下创建 input 目录,命令如下:
bash
./bin/hdfs dfs -mkdir input
现在,需要将"/usr/local/hadoop/etc/hadoop"目录下的本地文本文件(配置文件)"上传"到分布式文件系统 HDFS 中的"/user/hadoop/input"目录下。当然,这里的"上传"并不意味着数据通过网络传输。实际上,在伪分布式 Hadoop 环境下,本地的"/usr/local/hadoop/etc/hadoop"目录和 HDFS 中的"/user/hadoop/input"目录都在同一台机器上,并不需要通过网络传输数据。可以执行如下命令实现文件"上传":
bash
./bin/hdfs dfs -put ./etc/hadoop/*.xml input
接着,运行如下命令来执行测试样例程序 Grep:
bash
./bin/hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples- 3.3.5.jar grep input output 'dfs[a-z.]+'
在计算完成后,系统会自动在 HDFS 中生成"/user/hadoop/output"目录来存储计算结果。可以输入如下命令查看最终结果:
bash
./bin/hdfs dfs -cat output/*
运行上面命令后,可以得到以下结果:
bash
1 dfsadmin
1 dfs.replication
1 dfs.namenode.name.dir
1 dfs.datanode.data.dir
需要注意的是,当需要重新运行程序时,首先应将 HDFS 中的"output"目录删除,然后运行程序。删除"output"目录的命令如下:
bash
./bin/hdfs/ dfs -rm -r output
需要停止运行 HDFS 时,可以执行以下命令:
bash
cd /usr/local/hadoop
./sbin/stop-dfs.sh
小结
本文详述了 Ubuntu Kylin 16.04 LTS 下 Hadoop 的安装配置。先介绍安装 Ubuntu Kylin 发行版及 VMware 虚拟机软件,接着创建 Hadoop 用户、更新 apt 并安装 Vim。然后安装配置 SSH 实现无密码登录,再安装 Java 环境。之后进行单机 Hadoop 安装并运行 Grep 实例检测。最后进行 Hadoop 伪分布式安装,包括修改配置文件、初始化文件系统、启动 HDFS、在 HDFS 中操作文件、运行测试程序,还说明了重新运行程序及停止 HDFS 的方法 。
欢迎 点赞👍 | 收藏⭐ | 评论✍ | 关注🤗
