最近想研究一下分布式计算工具,于是瞄上了Hadoop,在网上找了很多教程,但还是遇到了一些问题,在这里就我记录一下遇到的问题。
版本是 Hadoop(3.0.3)
Hadoop(3.0.3)
Java环境检查
Java版本号检查
在terminal里输入如下指令可以查看Java版本1
$ java -version
如果Java已经是安装好了的话,就会出现如下的信息,里面的版本号可能会不一样
1 | $ java -version |
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并储存和拷贝,方法比较笨
先输入如下指令,生成ssh key
1
$ ssh-keygen
然后会提示将该key储存在哪里,这个路径就随意设置,比如我就储存在hadoop文件夹内
1
/Users/Oliver/Documents/hadoop-3.0.3/sshkey/id_rsa
其中id_rsa就是我们要的文件。
键入如下指令
1
cp /Users/Oliver/Documents/hadoop-3.0.3/sshkey/id_rsa.pub .ssh/authorized_keys
其中路径要和我们储存key的路径一致。这是为了拷贝新生成的public key
最后我们再试着输入
1
$ ssh localhost
此时应该就可以成功了
参考网址:Hadoop: start-dfs.sh permission denied
方法三
此方法还未经过验证(未完成)
配置环境变量
总环境变量配置
打开terminal
1 | $ touch ~/.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
我们就成功的配置好了Hadoop1
$ hadoop version
用该语句来确认Hadoop配置,此时可以查看
Hadoop文件配置
打开如下路径里的文件进行更改, 将代码复制进去
etc/hadoop/core-site.xml:
1
2
3
4
5
6<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>etc/hadoop/hdfs-site.xml:
1
2
3
4
5
6<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>etc/hadoop/mapred-site.xml:
1
2
3
4
5
6<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>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>
/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
在terminal里进入hadoop distribution的文件夹
1
2$ cd 到hadoop的文件夹,比如下面路径就是我的Hadoop
$ cd /users/Oliver/documents/hadoop-3.0.3/对Namenode执行格式化操作
1
$ hadoop namenode -format
启动hadoop
启动NameNode和DataNode
1
$ sbin/start-dfs.sh
成功后出现
1
2
3Starting namenodes on [localhost]
Starting datanodes
Starting secondary namenodes [xiaohuobandeMBP.local]启动ResourceManager和NodeManager
1
$ sbin/start-yarn.sh
成功后出现
1
2Starting resourcemanager
Starting nodemanagers检查hadoop是否启动成功
在terminal里输入
1
$ jps
会显示
1
2
3
4
518739 Jps
18133 NameNode
18375 SecondaryNameNode
18568 ResourceManager
18665 NodeManager则表示启动成功。
此时在浏览器中访问localhost:8088和localhost:9870(hadoop3.x版本),可以看到Hadoop的界面
localhost:50070(Hadoop2.x版本)
到此为止,Hadoop就已经完成配置了,接下来就是使用Hadoop了