0
点赞
收藏
分享

微信扫一扫

Ubuntu16.04安装Hadoop2.7.3教程

月孛星君 2022-04-13 阅读 71
java后端

Ubuntu16.04安装Hadoop2.7.3 教程

参考厦门大学数据库实验室 http://dblab.xmu.edu.cn/blog/install-hadoop/,遇到相关的地方有改动。

作者:秦景坤

日期:2017-4-20

GitHub: https://github.com/Roc-J/Hadoop/blob/master/%E5%A4%A7%E6%95%B0%E6%8D%AE%E5%AE%89%E8%A3%85%E6%93%8D%E4%BD%9C%E6%89%8B%E5%86%8C/Ubuntu16.04%E5%AE%89%E8%A3%85Hadoop2.7.3%E6%95%99%E7%A8%8B.md

主要内部包括 环境配置和本地和伪分布

本文档适合于原生Hadoop2,参考相关文档,亲自动手实践来一步一步搭建环境。转载请指明出处。

环境

本教程使用Ubuntu16.04 64位作为系统环境,包括桌面版和server版,其他版本系统,若有差异请自行百度安装教程系统。

本教程基于原生Hadoop2,安装的版本是Hadoop 2.7.3版本。

装好了Ubuntu系统之后,在安装Hadoop前还需要做一些必备工作

如果你安装Ubuntu的时候不是用的“hadoop”用户,那么需要增加一个名为hadoop的用户。(其实对用户名没有那么大严格的要求,但是感觉这样挺方便的)

首先按ctrl+alt+t打开终端窗口,或者用xshell进行连接操作,输入如下命令创建新用户。

sudo useradd -m hadoop -s /bin/bash

这条命令创建了可以登录的hadoop用户,并使用/bin/bash作为shell。

接着使用如下命令设置密码,可简单的设置为hadoop,按提示输入两次密码:

sudo passwd hadoop

可为hadoop用户增加管理员权限,方便部署,避免一些对新手来说比较棘手的权限问题

sudo adduser hadoop sudo

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TZeuKUIP-1649635820527)(http://i.imgur.com/K0xvwsS.png)]

最后使用su hadoop 切换到用户hadoop,或者注销当前用户,选择hadoop登录。

切换到hadoop用户后,先更新一些apt,后续会使用apt安装软件,如果没更新可能有一些软件安装不了。按ctrl+alt+t打开终端窗口或者使用xshell建立远程连接,执行如下命令:

sudo apt-get update

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ScHWq6LT-1649635820528)(http://i.imgur.com/bFjusSP.png)]

后续需要更改一些配置文件,我比较喜欢用的是vim(vi增强版,基本用法相同),建议安装一下(如果你实在还不会用vi,请使用桌面版的ubuntu的gedit,这样可以使用文本编辑器进行修改,并且每次文件更改完成后请关闭整个gedit程序,否则会占用终端。)

sudo apt-get install vim

安装软件时需要确认,在提示处输入y即可。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JgSfKhDb-1649635820529)(http://i.imgur.com/XVwv8q2.png)]

上面显示没有待安装的项目。

集群,单节点模式都需要用到SSH登录(类似于远程登录,你可以登录某台Linux主机,并且在上面运行命令),Ubuntu默认已安装了SSH client,此外还需要安装SSH server:

sudo apt-get install openssh-server

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

ssh localhost

此时会有如下提示(SSH首次登陆提示),输入yes。然后按提示输入密码hadoop,这样就可以登录到本机。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bluisp9M-1649635820530)(http://i.imgur.com/US1aVLl.png)]

但这样登录是需要每次输入密码的,我们需要配置成SSH无密码登录比较方便。

首先推出刚才的ssh,就回到了原先的终端窗口,然后利用ssh-keygen生成密钥,并将密钥加入到授权中:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-194t2e4N-1649635820531)(http://i.imgur.com/rnyjxRM.png)]

  • exit 退出刚才的ssh localhost
  • cd ~/.ssh/ 若没有该目录,请执行一次ssh localhost
  • ssh-keygen -t rsa 会有提示,都按回车就可以
  • cat ./id_rsa.pub >> ./authorized_keys 加入授权

此时再用ssh localhost命令,无需输入密码就可以直接登录了,如下图所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wMuDRPdN-1649635820532)(http://i.imgur.com/BtbBhkJ.png)]

安装Java环境

Java环境可选择Oracle的JDK,或是OpenJDK,本教程安装的是Oracle的JDK。

1.检查自己的系统是32-bit还是64-bit

在命令行输入:

getconf LONG_BIT

返回32或者是64,可以来查看操作系统的位数是32位还是64位

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lUYk6DV8-1649635820532)(http://i.imgur.com/PwWzPid.png)]

2.检查你的系统是否已经安装了java,输入命令:

java -version

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3T8AKysw-1649635820533)(http://i.imgur.com/sSnxc6Y.png)]

3.建立Java目录,输入命令:

sudo mkdir -p /usr/local/java

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1lyskSnZ-1649635820534)(http://i.imgur.com/Q3MTT3p.png)]

4.下载Linux版本的Orcle Java JDK,网址如下:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OTKPDTB5-1649635820534)(http://i.imgur.com/dxX5dhl.png)]

下载对应的版本jdk,本教程下载的是jdk-8u131-linux-x64.tar.gz

5.复制文件到刚刚创建的Java目录,路径为/usr/local/java;由于大多数的下载文件都会在路径/home/”你的用户名”/Downloads这个文件夹中,这里以此为例:

cd /home/hadoop/Downloads 
sudo cp -r jdk-8u131-linux-x64.tar.gz /usr/local/java/
cd /usr/local/java

6.解压下载文件到此目录:

sudo tar xvzf jdk-8u131-Linux-x64.tar.gz

7.下面开始设置环境变量

sudo vim /etc/profile

复制下面代码到文件的末尾处,然后保存并关闭文件:

JAVA_HOME=/usr/local/java/jdk1.8.0_131
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin
export JAVA_HOME
export PATH

8.通知你的Ubuntu Linux系统Oracle Java JDK的位置:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PVWbmfER-1649635820535)(http://i.imgur.com/iOrky2r.png)]

9.将Orcle java JDK设置为默认:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TLoo8lfS-1649635820536)(http://i.imgur.com/fitpgHd.png)]

10.重新加载下/etc/profile中的路径:

source /etc/profile

11.输入如下代码,测试是否安装配置成功:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NNqMswVi-1649635820537)(http://i.imgur.com/jxhknns.png)]

这样,Hadoop安装所需要的Java环境就配置好了。

安装Hadoop2

Hadoop2 可以通过http://mirrors.cnnic.cn/apache/hadoop/common/ 下载,一般选择下载最新的稳定版本,即下载”stable”下的hadoop-2.x.y.tar.gz这个格式的文件,这是编译好的,另一个包含src的则是Hadoop源代码,需要进行编译才可使用。

下载完hadoop文件后一般可以直接使用。

我们选择将Hadoop安装至/usr/local/中:

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

Hadoop解压后即可使用。输入如下命令来检查Hadoop是否可用,成功则会显示Hadoop版本信息:

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3e1yVH3Q-1649635820538)(http://i.imgur.com/q15EiHU.png)]

Hadoop单击配置(非分布式)

Hadoop默认模式为非分布式模式(本地模式),无需进行其他配置即可运行。非分布式即单java进程,方便进行调试。

现在可以执行例子来感受下Hadoop的运行。Hadoop附带了丰富的例子(运行./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar 可以看到所有的例子),包括wordcount、terasort、join、grep等。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WF4fNhVE-1649635820538)(http://i.imgur.com/o7FYPLN.png)]

在此我们选择运行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-2.7.3.jar grep ./input/ ./output 'dfs[a-z.]+'
cat ./output/*

执行成功后如下所示,输出了作业的相关信息,输出的结果是符合正则的单词dfsadmin出现了1次

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-H8MBEQ8W-1649635820539)(http://i.imgur.com/M9PheDn.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-n4srgO5b-1649635820539)(http://i.imgur.com/UsxlqZy.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-G4bGg44p-1649635820540)(http://i.imgur.com/W58LNyn.png)]

rm -r ./output

Hadoop伪分布式配置

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

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

修改配置文件core-site.xml(使用 vi ./etc/hadoop/core-site.xml),修改下面的

<configuration>  
</configuration>  

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iwDp9X60-1649635820540)(http://i.imgur.com/bOWTiP7.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5XEVxsaP-1649635820541)(http://i.imgur.com/SBFvRBf.png)]

同样的,修改配置文件hdfs-site.xml

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vDfIZzop-1649635820542)(http://i.imgur.com/iDA1KDR.png)]

配置完成后,执行NameNode的格式化

./bin/hdfs namenode -format

成功的话,会看到”successfully formatted”和”Exitting with status 0”的提示,若为”Exitting with status 1”则是处错。

第一次运行的时候出现了一个处错:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CtFPwzTo-1649635820543)(http://i.imgur.com/UalC5LK.png)]

上面的错误说是XML的版本不支持,在笔者将2.0改为1.0后,重新运行结果如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2LE21qYt-1649635820544)(http://i.imgur.com/5FZppcC.png)]

接着开启NameNode和DataNode守护进程。

./sbin/start-dfs.sh          #start-dfs.sh是个完整的执行文件,中间没有空格键  

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1zARKC9x-1649635820545)(http://i.imgur.com/VpflUPD.png)]

若出现SSH提示,输入yes即可。

启动完成后,可以通过命令jps来判断是否成功启动,若成功启动则会列出如下进程:
“NameNode”,”DataNode”,”SecondaryNameNode”(如果SecondaryNameNode没有启动,请运行sbin/stop-dfs.sh关闭进行,然后再次尝试启动尝试)。如果没有NameNode或DataNode,那就是配置不成功,请仔细检查之前步骤,或通过查看启动日志排查原因。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VIqVRBH8-1649635820546)(http://i.imgur.com/8Mt0NS7.png)]

运行Hadoop伪分布式实例

上面的单击模式,grep例子读取的是本地数据,伪分布式读取则是HDFS上的数据。要使用HDFS,首先需要在HDFS中创建用户目录:

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

接着将./etc/hadoop中的xml文件作为输入文件复制到分布式系统中,即将/usr/local/hadoop/etc/hadoop复制到分布式文件系统中的/user/hadoop/input中。使用的是hadoop用户,并且已创建相应的用户目录/user/hadoop,因此在命名中可以使用相对路径如input,其对应的绝对路径是/user/hadoop/input

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

复制完成后,可以使用如下命令查看文件列表:

./bin/hdfs dfs -ls input

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oFkZ4KnS-1649635820546)(http://i.imgur.com/91vnjWs.png)]

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

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8eVaOXzV-1649635820549)(http://i.imgur.com/3OwY3kb.png)]

查看运行结果的命令(查看的是位于HDFS中的输出结果):

./bin/hdfs dfs -cat output/*

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NKRFL3fV-1649635820550)(http://i.imgur.com/y1rXLWy.png)]

若要关闭Hadoop,则运行

./sbin/stop-dfs.sh

举报

相关推荐

0 条评论