前言

Hadoop部署有3种方式:本地模式、伪分布式、完全分布式;
以Mac OS为例,部署伪分布式以及安装过程中遇到的问题;

一、部署伪分布式

1. 下载jdk并部署环境变量

jdk的安装网上资料很多,本文直接跳过

2. 下载Hadoop

官网链接:http://mirrors.shu.edu.cn/apache/hadoop/common/hadoop-2.9.1/hadoop-2.9.1.tar.gz
解压至想存放的文件夹内:tar -zxvf hadoop-2.9.1.tar.gz

3. 配置Hadoop

进入hadoop-2.9.1/etc/hadoop目录下:
配置hadoop 里面conf文件夹五个文件(hadoop-env.sh、mapred-env.sh、yarn-env.sh、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml)

3.1. 配置hadoop-env.sh、mapred-env.sh、yarn-env.sh

修改环境变量文件:~/.bash_profile

  1. export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home
  2. export HADOOP_HOME=/Users/leander/Installed/Hadoop/hadoop-2.9.1

在上面的三个文件中,首行执行命令:source ~/.bash_profile

另外,注意: 在这几个sh文件中,JAVA_HOME和HADOOP_HOME必须显式配置,引用 ${环境变量} 无效 ,也有可能我没有get到正确的姿势;

3.2. 配置core-site.xml

修改配置如下:

  1. <configuration>
  2. <property>
  3. <name>fs.defaultFS</name>
  4. <value>hdfs://localhost:9000</value>
  5. </property>
  6. <!--用来指定hadoop运行时产生文件的存放目录 自己创建-->
  7. <property>
  8. <name>hadoop.tmp.dir</name>
  9. <value>/Users/leander/Installed/Hadoop/hdfs-tmp</value>
  10. </property>
  11. </configuration>

3.3. 配置hdfs-site.xml

修改配置如下:

  1. <configuration>
  2. <property>
  3. <!--指定hdfs保存数据副本的数量,包括自己,默认为3-->
  4. <!--伪分布式模式,此值必须为1-->
  5. <name>dfs.replication</name>
  6. <value>1</value>
  7. </property>
  8. <!--不是root用户也可以写文件到hdfs-->
  9. <property>
  10. <name>dfs.permissions</name>
  11. <!--关闭防火墙-->
  12. <value>false</value>
  13. </property>
  14. </configuration>

3.4. 配置mapred-site.xml

修改配置如下:

  1. <configuration>
  2. <property>
  3. <!--指定mapreduce运行在yarn上-->
  4. <name>mapreduce.framework.name</name>
  5. <value>yarn</value>
  6. </property>
  7. </configuration>

3.5. 配置yarn-site.xml

修改配置如下:

  1. <configuration>
  2. <!-- Site specific YARN configuration properties -->
  3. <property>
  4. <name>yarn.resourcemanager.hostname</name>
  5. <value>localhost</value>
  6. </property>
  7. <property>
  8. <!--NodeManager获取数据的方式-->
  9. <name>yarn.nodemanager.aux-services</name>
  10. <value>mapreduce_shuffle</value>
  11. </property>
  12. </configuration>

等启动成功后,可通过 localhost:8088 去访问Yarn的web页面,查看mr的job,注意:只能通过localhost,通过ip访问不到

4. 配置环境变量

  • 在 .bash_profile 文件中配置Hadoop环境变量,使用vim打开该文件,进入编辑模式

  • 在该文件中添加

  1. export HADOOP_HOME=HADOOP_HOME=/Users/leander/Installed/Hadoop/hadoop-2.9.1
  2. export PATH=$PATH:$HADOOP_HOME/bin
  • 执行:source ~/.bash_profile

5. 配置ssh免登陆

5.1. mac 上如果已经安装配置了ssh,可忽略该步

在终端输入:ssh-keygen -t rsa命令,碰到需要输入密码的直接按enter健即可。出现如下成功:

  1. Enter passphrase (empty for no passphrase):
  2. Enter same passphrase again:
  3. Your identification has been saved in /Users/leander/.ssh/id_rsa.
  4. Your public key has been saved in /Users/leander/.ssh/id_rsa.pub.
  5. The key fingerprint is:
  6. d4:85:aa:83:ae:db:50:48:0c:5b:dd:80:bb:fa:26:a7 xxx
  7. The key's randomart image is:
  8. +--[ RSA 2048]----+
  9. |. .o.o .. |
  10. | =. . . ... |
  11. |. o. ... |
  12. | ... .. |
  13. | .... .S |
  14. | ... o |
  15. | ... . |
  16. |o oo. |
  17. |E*+o. |
  18. +-----------------+

5.2. 在终端输入cd ~/.ssh 进入.ssh目录,输入命令:

  1. cp id_rsa.pub authorized_keys

5.3. 验证

在mac命令中输入:

  1. ssh localhost
  2. 1.如果出现:ssh: connect to host localhost port 22: Connection refused,表示当前用户没有权限
  3. 解决办法:
  4. Mac OS为例:
  5. a.在“系统设置”中,点击 “共享”
  6. b.选中 “远程登录”,允许访问的用户选择 “所有用户”
  7. 2.如果出现:No such file or directory...
  8. 解决办法:
  9. a.启动sshd服务:sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist
  10. b.查看服务的启动,筛选:sudo launchctl list | grep ssh

6. 启动Hadoop

6.1. 格式化namenode

  1. # 格式化namenode
  2. hadoop namenode -format

启动图片如下:

Hadoop2.9.1 - 图1

Hadoop2.9.1 - 图2

6.2. 启动hadoop

  1. cd ~/Installed/Hadoop/hadoop-2.9.1/sbin
  2. ./start-all.sh(不能用sh start-all.sh代替,否则会报错)

使用sh start-all.sh启动,报错如下:

Hadoop2.9.1 - 图3

7. 验证&使用

7.1. 验证

启动结束后在shell输入命令 jps 可输出所有java进程及其pid

  1. $ jps
  2. 5506 Jps
  3. 4164 DataNode
  4. 4583 NodeManager
  5. 4487 ResourceManager
  6. 4297 SecondaryNameNode
  7. 4063 NameNode

7.2. 使用

至此,Hadoop环境配置成功,此时可执行下面命令:

  1. hadoop fs -mkdir /testdata hdfs根目录下创建一个文件夹 testdata
  2. hadoop fs -ls /          可查看根目录下的文件及文件夹

8. 遇到的问题

8.1. 启动报错

Hadoop2.9.1 - 图4
解决方案:

  1. Mac OS为例:
  2. 1.在“系统设置”中,点击 “共享”
  3. 2.选中 “远程登录”,允许访问的用户选择 “所有用户”

8.2 使用hadoop命令报错,如下:

  1. WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform...

解决办法,参考链接:https://blog.csdn.net/l1028386804/article/details/51538611

9. 说明

本篇安装过程参考以下博文:
http://hadoop.apache.org/docs/r2.9.1/hadoop-project-dist/hadoop-common/FileSystemShell.html
https://www.cnblogs.com/EnzoDin/p/6940448.html
https://www.cnblogs.com/aijianiula/p/3842581.html
https://blog.csdn.net/hliq5399/article/details/78193113

10. 多知道点

HDFS文件目录详解:https://blog.csdn.net/baiye_xing/article/details/76268495