Hadoop(3.0.3)安装和配置过程(Mac)

最近想研究一下分布式计算工具,于是瞄上了Hadoop,在网上找了很多教程,但还是遇到了一些问题,在这里就我记录一下遇到的问题。
版本是 Hadoop(3.0.3)

Hadoop(3.0.3)

Java环境检查

Java版本号检查

在terminal里输入如下指令可以查看Java版本

1
$ java -version

如果Java已经是安装好了的话,就会出现如下的信息,里面的版本号可能会不一样

1
2
3
4
$ java -version
java version "1.8.0_161"
Java(TM) SE Runtime Environment (build 1.8.0_161-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)

Java安装

如果你没有Java,在这网址里可以安装
Java安装网址
JDK的安装就搜索一下就有

Java的的系统环境变量

Java的系统环境变量是如下指令查询的

1
$ /usr/libexec/java_home

查询成功会反馈类似的路径

1
/Library/Java/JavaVirtualMachines/jdk1.8.0_161.jdk/Contents/Home

该路径一会配置环境变量会用得上

Hadoop下载

Hadoop下载链接
我是在这里下载的3.0.3版本号。和之前2.x的版本有些许不一样。然后我是下载的编译好的binary版本。
Hadoop3.0.3下载链接
进来之后任意选择镜像下载就可以了。

然后把解压后的文件夹hadoop-3.0.3存放到一个路径,比如我就把该文件夹放在documents下面。路径如下

1
/Users/Oliver/Documents/hadoop-3.0.3

配置Mac os环境

SSH

这里就是我遇到问题最奇怪的地方

按照别人讲的教程大概有如下三种方法

1
$ ssh localhost

然后查看是否登陆成功,登陆成功讯息如下

1
2
3
$ ssh localhost
MBP:hadoop-3.0.3 Oliver$ ssh localhost
Last login: Sat Jun 23 10:42:58 2018

如果这里不是直接输出如上讯息,那么看是否需要输入密码,就根据提示一步一步来。
如果还是不成功,那么看如下方法

方法一

打开系统偏好设置

–> 共享
–> 勾选远程登录
–> 设置允许访问:所有用户

然后再次在terminal里输入

1
$ ssh localhost

参考网址:Mac 系统安装Hadoop 2.7.3
参考网址:Setting up Hadoop 2.6 on Mac OS X Yosemite

如果以上方法不成功

方法二

生成一个ssh key并储存和拷贝,方法比较笨


  1. 先输入如下指令,生成ssh key

    1
    $ ssh-keygen

    然后会提示将该key储存在哪里,这个路径就随意设置,比如我就储存在hadoop文件夹内

    1
    /Users/Oliver/Documents/hadoop-3.0.3/sshkey/id_rsa

    其中id_rsa就是我们要的文件。


  1. 键入如下指令

    1
    cp /Users/Oliver/Documents/hadoop-3.0.3/sshkey/id_rsa.pub .ssh/authorized_keys

    其中路径要和我们储存key的路径一致。这是为了拷贝新生成的public key


  1. 最后我们再试着输入

    1
    $ ssh localhost

    此时应该就可以成功了


参考网址:Hadoop: start-dfs.sh permission denied

方法三

此方法还未经过验证(未完成)

配置环境变量

总环境变量配置

打开terminal

1
2
$ touch ~/.bash_profile
$ vim ~/.bash_profile

执行以上代码可以进入Vim编辑器,编辑环境变量。
添加如下代码
键入 i 可以开始编辑(详情可以搜索Vim的命令)

1
2
3
# Hadoop
export HADOOP_HOME=/Users/Oliver/Documents/hadoop-3.0.3(这个是Hadoop distribution的路径,根据自己设定的来调)
export PATH=$PATH:$HADOOP_HOME/bin

然后保存再退出,以下是部分Vim的指令,其余指令可以自行搜索一下

命令 简单说明
:w 保存编辑后的文件内容,但不退出vim编辑器
:wq 保存文件内容后退出vim编辑器
:q 在未做任何编辑处理而准备退出vim时,可以使用此命令

退出Vim界面之后,在terminal里输入如下命令使变量立即生效

1
$ source ~/.bash_profile

我们就成功的配置好了Hadoop

1
$ hadoop version

用该语句来确认Hadoop配置,此时可以查看

Hadoop文件配置

打开如下路径里的文件进行更改, 将代码复制进去

  1. etc/hadoop/core-site.xml:

    1
    2
    3
    4
    5
    6
    <configuration>
    <property>
    <name>fs.defaultFS</name>
    <value>hdfs://localhost:9000</value>
    </property>
    </configuration>
  2. etc/hadoop/hdfs-site.xml:

    1
    2
    3
    4
    5
    6
    <configuration>
    <property>
    <name>dfs.replication</name>
    <value>1</value>
    </property>
    </configuration>
  3. etc/hadoop/mapred-site.xml:

    1
    2
    3
    4
    5
    6
    <configuration>
    <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
    </property>
    </configuration>
  4. etc/hadoop/yarn-site.xml:

    1
    2
    3
    4
    5
    6
    <configuration>
    <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
    </property>
    </configuration>

    参考网址:Setting up Hadoop 2.6 on Mac OS X Yosemite

  1. /etc/hadoop/hadoop-env.sh handoop环境
    添加这段代码就可以了,注意就是Java的系统环境变量的路径

    1
    export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_161.jdk/Contents/Home

    可以看到前面一开始提到的用如下指令查询

    1
    $ /usr/libexec/java_home

执行 start hdfs and yarn

  1. 在terminal里进入hadoop distribution的文件夹

    1
    2
    $ cd 到hadoop的文件夹,比如下面路径就是我的Hadoop
    $ cd /users/Oliver/documents/hadoop-3.0.3/
  2. 对Namenode执行格式化操作

    1
    $ hadoop namenode -format
  3. 启动hadoop

    启动NameNode和DataNode

    1
    $ sbin/start-dfs.sh

    成功后出现

    1
    2
    3
    Starting namenodes on [localhost]
    Starting datanodes
    Starting secondary namenodes [xiaohuobandeMBP.local]

    启动ResourceManager和NodeManager

    1
    $ sbin/start-yarn.sh

    成功后出现

    1
    2
    Starting resourcemanager
    Starting nodemanagers
  4. 检查hadoop是否启动成功

    在terminal里输入

    1
    $ jps

    会显示

    1
    2
    3
    4
    5
    18739 Jps
    18133 NameNode
    18375 SecondaryNameNode
    18568 ResourceManager
    18665 NodeManager

    则表示启动成功。
    此时在浏览器中访问localhost:8088和localhost:9870(hadoop3.x版本),可以看到Hadoop的界面
    localhost:50070(Hadoop2.x版本)

hadoop界面
hadoop界面2


到此为止,Hadoop就已经完成配置了,接下来就是使用Hadoop了