Ubantu16.04下安装伪分布式Hadoop2.9.1

作者 zhan-bin 日期 2018-06-26
Ubantu16.04下安装伪分布式Hadoop2.9.1

Ubantu16.04下安装伪分布式Hadoop2.9.1

作者:Zhan-bin
日期:2018-6-26

配置过程

1.创建hadoop用户

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

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

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

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

sudo命令
本文中会大量使用到sudo命令。sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等。这样不仅减少了root用户的登录 和管理时        间,同样也提高了安全性。sudo不是对shell的一个代替,它是面向每个命令的。当使用sudo命令时,就    需要输入您当前使用用户的密码

密码 在Linux的终端中输入密码,终端是不会显示你当前输入的密码,也不会提示你已经输入了多少字符密码。

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

1
sudo passwd hadoop

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

1
sudo adduser hadoop sudo

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

2.更新apt

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

1
sudo apt-get update

2

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

1
sudo apt-get install vim

安装软件时需要确认,在提示处输入y即可。
还没用过Vim的可以参考下面的vim常用命令介绍
常用的vim操作命令

3.安装SSH并配置SSH免密登陆

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

1
sudo apt-get install openssh-server

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

1
ssh localhost

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

现在我们设置不用SSH不用密码登陆。

  • 1.先退出刚刚的SSH。回到原先的终端窗口,终端输入exit退出。
    1
    exit

如图所示:
4

  • 2.然后切换路径并使用ssh-keygen生成密钥,并将密钥加入到授权中(如提示 bash: cd: adasd: No such file or directory 请执行一次ssh localhost
1
cd ~/.ssh/
1
ssh-keygen -t rsa

效果如下图:
5

  • 3.最后执行 cat ./id_rsa.pub >> ./authorized_keys 加入授权(后面没有任何的提示)
1
cat ./id_rsa.pub >> ./authorized_keys

效果:
6

再次输入ssh localhost 就无需输入密码了,如下图:
7

4.配置JDK

1.下载JDK
这里我下载的JDK是Oracle的 jdk-8u171-linux-x64.tar.gz 这个版本的
下载地址:JDK下载地址-点击打开
这里我用的是64位系统,如果是32位的请下载x86的jdk

2.将JDK放置需要安装的路径下,并解压文件
这里我将JDK安装到 /usr/local/java/ 中。

  • 先建立目录,执行命令:

    1
    sudo mkdir -p /usr/local/java
  • 将刚刚下载的JDK复制到java安装路径中,执行命令:

    1
    2
    3
    cd /home/hadoop/Downloads
    sudo cp -r jdk-8u171-linux-x64.tar.gz /usr/local/java/
    cd /usr/local/java
  • 解压:

    1
    sudo tar xvzf jdk-8u171-linux-x64.tar.gz

3.配置环境变量

  • 先执行cd 切换到根目录下再执行 sudo vim /etc/profile ming ,然后将下面代码插入到文件的末尾 命令如下:
    1
    2
    cd
    sudo vim /etc/profile

将下面代码插入到文件末尾

1
2
3
4
JAVA_HOME=/usr/local/java/jdk1.8.0_171
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin
export JAVA_HOME
export PATH

  • 执行update-alternatives
1
2
3
sudo update-alternatives --install "/usr/bin/java" "java" "/usr/local/java/jdk1.8.0_171/bin/java" 1
sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/local/java/jdk1.8.0_171/bin/javac" 1
sudo update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/local/java/jdk1.8.0_171/bin/javaws" 1
1
2
3
sudo update-alternatives --set java /usr/local/java/jdk1.8.0_171/bin/java
sudo update-alternatives --set javac /usr/local/java/jdk1.8.0_171/bin/javac
sudo update-alternatives --set javaws /usr/local/java/jdk1.8.0_171/bin/javaws

重新加载下 /etc/profile

1
source /etc/profile

  • 测试
    执行如下命令测试是否安装成功
    1
    java -version

8

5.安装hadoop2.9.1

  • 这里使用的是hadoop2.9.1 尽量下载stable文件夹里面的稳定版本。下载”stable”下的hadoop-2.x.y.tar.gz这个格式的文件
  • 下载地址:hadoop下载地址-点击打开
  • 这里将hadoop安装在 /usr/local/ 中:
    1
    2
    3
    4
    sudo tar -zxf ~/Downloads/hadoop-2.9.1.tar.gz -C /usr/local  #解压到/usr/local中
    cd /usr/local/
    sudo mv ./hadoop-2.9.1/ ./hadoop #将文件夹名改为hadoop
    sudo chown -R hadoop ./hadoop #修改文件权限

解压之后直接测试有没有装成功

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

5.1 配置hadoop环境变量

  • (1)打开系统文件(添加如下图框框内的内容):

    1
    vi /etc/profile
  • (1)在末尾加上hadoop安装路径(这里我的hadoop安装路径是/usr/local/hadoop,如果你的不是这个目录,就把后面的/usr/local/hadoop改为你自己的安装目录)

    1
    2
    export HADOOP_INSTALL=/usr/local/hadoop
    export HADOOP_HOME=/usr/local/hadoop
  • (2)在PATH的后面加上下面内容:

    1
    :$HADOOP_HOME/bin:$HADOOP_HOME/sbin

18

  • (3)重新加载下profile

    1
    source /etc/profile
  • (4)输入“hdfs -version”测试下有没有安装成功
    19

    6.配置hadoop伪分布式

    Hadoop伪分布式模式是在单机上模拟Hadoop分布式,单机上的分布式并不是真正的伪分布式,而是使用线程模拟分布式。Hadoop本身是无法区分伪分布式和分布式的,两种配置也很相似。唯一不同的地方是伪分布式是在单机器上配置,数据节点和名字节点均是一个机器。
    1.修改配置文件
    修改/usr/local/hadoop/etc/hadoop中的core-site.xml和hdfs-site.xml文件

  • 修改core-site.xml,操作路径: /usr/local/hadoop
    1
    2
    cd /usr/local/hadoop #先进入到hadoop安装目录
    vi ./etc/hadoop/core-site.xml #打开配置文件

修改下面的内容:



改为:
9

  • 修改 hdfs-site.xml
    修改下面的内容:


    改为:
    10

  • namenode格式化及测试
    执行如下命令进行namenode格式化:

    1
    ./bin/hdfs namenode -format

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

接着直接开启hadoop所有节点:

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

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

启动时若提示没有找到JAVA_HOME,则需要在hadoop文件下的/etc/hadoop/hadoop-env.sh下将JAVA_HOME重新写一下路径,我也遇到了这个问题。
解决JAVA_HOME问题参考:hadoop启动找不到JAVA_HOME
启动时可能会出现如下WARN提示:WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable
WARN提示可以忽略,并不会影响正常使用。

启动完成后,可以通过命令jps来判断是否成功启动,若成功启动则会列出如下进程:
“NameNode”,”DataNode”,”SecondaryNameNode”(如果SecondaryNameNode没有启动,请运行sbin/stop-dfs.sh关闭进行,然后再次尝试启动尝试)。
如果没有NameNode或DataNode,那就是配置不成功,请仔细检查之前步骤,或通过查看启动日志排查原因。(这里有个eclipse是因为我这边开了eclipse,正常时会出现 Jps,SecondaryNameNode,NameNode,DataNode 这4个) 如果是Datanode或者Namenode其中一个启动不了很可能是这两个节点ID不一样。请参考:hadoop namenode或Datanode无法启动解决办法
11