Ubuntu16.04 安装配置 Hadoop3.0.0 —— 单机模式和伪集群模式

最近在上大数据课程,老师让自己搞一个 Hadoop 的集群,费了好大劲算是配置好了三个机器的 Hadoop 集群,这里特地记录一下。

本篇是整个配置的第一部分,即单机模式和伪分布式模式,第二部分集群模式的配置见:Ubuntu16.04 安装配置 Hadoop3.0.0 —— 集群模式

环境:Ubuntu 16.04 x64;JDK1.8;Hadoop 3.0.0

2018-3-29 更新:修复设置 Java和Hadoop环境变量的问题,之前配置过的可能需要重新配置

零、一键安装脚本

这里为什么是零呢?因为是独立于手动配置的一个步骤。我比较懒省事,不想每次创建一个虚拟机都重新输入一堆命令来安装 Hadoop,因此我写了一个一键安装 Hadoop 脚本,脚本是用 shell 写的,目前仅支持 Ubuntu 16.04 x64,项目实现了修改 apt 软件源为阿里的 CDN 源、安装 JDK1.8、下载解压 Hadoop 3.0.0 或者 2.7.5 版本、自动配置 Java 和 Hadoop 环境变量、配置 SSH 本地主机免密码登陆(适用于伪分布式模式)等功能,后期可能会开发出自动配置 Hadoop 的功能。

项目地址在 Github 上: https://github.com/sunriseydy/auto-install-hadoop

使用的方法:在一个纯净的 Ubuntu 16.04 x64 系统上(意思就是刚刚创建好的系统),在终端中输入以下命令:

wget -O start.sh https://github.com/sunriseydy/auto-install-hadoop/raw/master/start.sh && sudo bash start.sh

注意在 && 后面是用 sudo 执行该脚本文件,然后输入当前用户的密码。

脚本会创建一个 hadoop 用户,密码默认为 hadoop ,同时 JDK 安装的路径为:/usr/lib/jvm/java-8-openjdk-amd64 ,hadoop 的安装路径为: /usr/local/hadoop

脚本运行结束后 Hadoop 就已经是单机模式了,接着就可以跳到 单机模式的运行 开始了。至于怎么配置集群模式,我会在后面慢慢说的,当然步骤还是由简到难,即从“单机模式”到“伪集群模式”到“集群模式”。

一、准备工作

0.新建hadoop用户

这里还有一个零步骤,这个零步骤是新建一个 hadoop 用户,和其他 linux 用户区别开来,这样有助于环境的配置,当然如果你想用 root 用户安装运行 hadoop 也不是不可以,只不过运行时 hadoop 会有警告而已。

新建 hadoop 用户,密码我这里统一用 hadoop

sudo useradd -m hadoop -s /bin/bash
sudo passwd hadoop #在下面输入两次密码来新建密码
sudo adduser hadoop sudo

接下来的步骤中如未说明则均以 hadoop 用户执行命令,切换到 hadoop 用户的命令是:

su hadoop

然后输入 hadoop 用户的密码即可。

1.换源

我这里装的是 Ubuntu Server 16.04,这个版本默认的软件源是 Ubuntu 美国官方的源,对于国内来说速度极慢,因此首先要把软件源换成国内的,这里我选择的是阿里的一个 CDN 源,换源的方法具体可以看我写的另一篇博客:Ubuntu更换软件源,简单的方法就是运行以下命令:

sudo echo "deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
" > /etc/apt/sources.list

或者以管理员权限编辑 apt 的源,即 /etc/apt/sources.list 文件,将上面的代码引号部分复制到文件中,记着要删除原来文件中的内容。

接着以管理员权限运行

sudo apt-get update
sudo apt-get upgrade

注意,接下来我会以 sudo 标识这条命令是需要以管理员权限运行的。

2.安装必要的软件

更换好软件源之后我们就来安装一些必要的软件了。

sudo apt-get install -y vim openssh-server openjdk-8-jdk wget tar pdsh

下面一一解释这些软件:

a.安装ssh服务端和pdsh

Hadoop 3.0.0 中 NameNode(Boss,老板) 管理 DataNode(Workers,员工)是通过 SSH ,并且使用的是 PDSH (Parallel Distributed SHell,可并行的执行对目标主机的操作),因此首先要安装 SSH 的服务端和 PDSH。输入如下命令即可:

sudo apt-get install -y openssh-server  pdsh

在安装完 openssh-server 之后就开启了 SSH 的服务端,具体的介绍可以查看我写的一篇博客:Ubuntu配置ssh并实现Putty密钥登陆、禁止密码登陆、更改ssh端口

注意,这里安装完 PDSH 之后如果不做设置它默认使用的并不是 SSH,这样在后序运行 Hadoop 时会报错(socket err),因此这里先设置一下:

echo "export PDSH_RCMD_TYPE=ssh" >> /home/hadoop/.bashrc
source /home/hadoop/.bashrc

这样就指定了 PDSH 使用的是 SSH。

B.安装 JDK

由于 Hadoop 是使用 Java 写的,并且开发 Hadoop 的程序也是要用 Java 写,因此必须要安装 JDK 并配置好环境变量。具体的安装和配置方法可以参考我写的一篇博客:在Linux[Ubuntu CentOS]上安装配置JDK

简单来说就是:

sudo apt-get install -y openjdk-8-jdk

这个命令是安装开源版的 JDK1.8,并且默认安装在/usr/lib/jvm/java-8-openjdk-amd64 路径下,因此在配置 Java 环境变量时 JAVA_HOME 就是这个路径。配置的方法如下:

echo 'export JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64"' >> /home/hadoop/.bashrc

注意,这里添加的环境变量只针对于 hadoop 用户,若想让所有的用户都能用 Java,则将上述代码改为下面所示(/etc/profile 需要重启终端才能生效或者手动 source):

sudo echo 'export JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64"' >> /etc/profile

然后将修改 PATH 系统变量:

echo "export PATH=$PATH:${JAVA_HOME}/bin" >> /home/hadoop/.bashrc

同样的,若想更改系统级别的 PATH 就需要将代码改为:

sudo echo "export PATH=$PATH:${JAVA_HOME}/bin" >> /etc/profile

最后要配置  CLASSPATH:

echo 'export CLASSPATH=.:$JAVA_HOME/lib' >> /home/hadoop/.bashrc
#或者
sudo echo 'export CLASSPATH=.:$JAVA_HOME/lib' >> /etc/profile

最后的最后 source 一下

source /home/hadoop/.bashrc

好啦,这样 Java 的环境就配置好了。

二、下载 Hadoop

准备工作做好之后就可以下载安装 Hadoop 了。前往 Apache Hadoop 的 Release 页面(Apache Hadoop Releases )选择要下载安装的版本,这里我选择的是 3.0.0 版本的 Binary ,即编译好的二进制文件,我们下载解压之后就可以直接使用,不用再自行编译。

点击 Binary 后可能会跳转到选择镜像源的页面,如果嫌官方的下载源下载速度慢的话可以选择清华大学的镜像源,地址为:https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/;打开后选择要下载的版本,然后选择 hadoop-*-.tar.gz 下载,不要选择带有 src 的版本,这是源代码,还需要编译才能运行。

下载的命令为;

wget -O hadoop-3.0.0.tar.gz http://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-3.0.0/hadoop-3.0.0.tar.gz

可以将其中的下载地址换为你自己复制的下载地址。

三、安装 Hadoop

将下载好的 Hadoop 安装包解压(以下命令需要用 sudo ):

sudo tar -zxf hadoop-3.0.0.tar.gz -C /usr/local
cd /usr/local/
sudo mv ./hadoop-3.0.0/ ./hadoop

这里我是把 Hadoop 解压到了 /usr/local 目录下(命令中的 Hadoop 名字可根据自己的实际情况更改)。

安装之后我们要把 hadoop 目录的权限和拥有者都设置为我们之前创建的 hadoop 用户。

cd /usr/local/
sudo chown -R hadoop:hadoop ./hadoop

之后我们要将 Hadoop 的相关路径添加到用户变量中(如果你的 Hadoop 安装路径与我的不同,要做相应的更改):

echo "export PATH=$PATH:/usr/local/hadoop/bin:/usr/local/hadoop/sbin" >> /home/hadoop/.bashrc
echo "export HADOOP_HOME=/usr/local/hadoop" >> /home/hadoop/.bashrc
echo 'export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$CLASSPATH:`$HADOOP_HOME/bin/hadoop classpath`' >> /home/hadoop/.bashrc
echo 'export CLASSPATH=$CLASSPATH:$HADOOP_CLASSPATH' >> /home/hadoop/.bashrc
source /home/hadoop/.bashrc

接着我们输入

hadoop
#或者
cd $HADOOP_HOME && bin/hadoop

可以看到屏幕输出了 hadoop 命令的帮助信息。刚安装完的时候 Hadoop 的初始模式是单机模式,接下来我们测试下 Hadoop 的单机模式。

四、Hadoop 单机模式

这里可以参考官网的文档:http://hadoop.apache.org/docs/r3.0.0/hadoop-project-dist/hadoop-common/SingleCluster.html,简单来说就是跑一个 grep 程序,查找 etc/hadoop/ 下所有的 xml 文件中符合特定正则表达式的字符串(先讲所有文件复制到 input 目录下,然后将输出结果放到 output 目录下)。当然你可以用 wordcount 这个测试程序来跑。注意,以下命令均在 Hadoop 的安装目录下,即 /usr/local/hadoop,所以在执行下面的命令之前先执行

cd /usr/local/hadoop
#或者
cd $HADOOP_HOME

跳转到 Hadoop 的安装目录。

mkdir input
cp etc/hadoop/*.xml input
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.0.0.jar grep input output 'dfs[a-z.]+'
cat output/*  #  显示出计算结果

要记住的是,每次计算完之后都要把 output 目录删掉,不然下次将结果输出到 output 时就会报错。

运算的结果大致是这样的:

1       dfsadmin
1       dfs.replication

接着就是要删除这个计算结果,即:

rm  -rf output

五、伪分布式模式

见下一页


版权说明:
作品 sunriseydy 采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
文章内容如未说明均为原创,欢迎转载,但请注明原作者(sunriseydy)和原文链接(https://blog.sunriseydy.top/technology/server-blog/server/ubuntu16-04-install-hadoop3-0-0-with-a-single-node/)
部分来自互联网的文章,如有侵权,请联系我,24小时内删除,谢谢

微博 QQ 打赏 点赞 2

评论一下呗亲

电子邮件地址不会被公开。 必填项已用*标注