前言
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
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home
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
修改配置如下:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
<!--用来指定hadoop运行时产生文件的存放目录 自己创建-->
<property>
<name>hadoop.tmp.dir</name>
<value>/Users/leander/Installed/Hadoop/hdfs-tmp</value>
</property>
</configuration>
3.3. 配置hdfs-site.xml
修改配置如下:
<configuration>
<property>
<!--指定hdfs保存数据副本的数量,包括自己,默认为3-->
<!--伪分布式模式,此值必须为1-->
<name>dfs.replication</name>
<value>1</value>
</property>
<!--不是root用户也可以写文件到hdfs-->
<property>
<name>dfs.permissions</name>
<!--关闭防火墙-->
<value>false</value>
</property>
</configuration>
3.4. 配置mapred-site.xml
修改配置如下:
<configuration>
<property>
<!--指定mapreduce运行在yarn上-->
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
3.5. 配置yarn-site.xml
修改配置如下:
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>localhost</value>
</property>
<property>
<!--NodeManager获取数据的方式-->
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
等启动成功后,可通过 localhost:8088 去访问Yarn的web页面,查看mr的job,注意:只能通过localhost,通过ip访问不到
4. 配置环境变量
在 .bash_profile 文件中配置Hadoop环境变量,使用vim打开该文件,进入编辑模式
在该文件中添加
export HADOOP_HOME=HADOOP_HOME=/Users/leander/Installed/Hadoop/hadoop-2.9.1
export PATH=$PATH:$HADOOP_HOME/bin
- 执行:source ~/.bash_profile
5. 配置ssh免登陆
5.1. mac 上如果已经安装配置了ssh,可忽略该步
在终端输入:ssh-keygen -t rsa命令,碰到需要输入密码的直接按enter健即可。出现如下成功:
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/leander/.ssh/id_rsa.
Your public key has been saved in /Users/leander/.ssh/id_rsa.pub.
The key fingerprint is:
d4:85:aa:83:ae:db:50:48:0c:5b:dd:80:bb:fa:26:a7 xxx
The key's randomart image is:
+--[ RSA 2048]----+
|. .o.o .. |
| =. . . ... |
|. o. ... |
| ... .. |
| .... .S |
| ... o |
| ... . |
|o oo. |
|E*+o. |
+-----------------+
5.2. 在终端输入cd ~/.ssh 进入.ssh目录,输入命令:
cp id_rsa.pub authorized_keys
5.3. 验证
在mac命令中输入:
ssh localhost
1.如果出现:ssh: connect to host localhost port 22: Connection refused,表示当前用户没有权限
解决办法:
以Mac OS为例:
a.在“系统设置”中,点击 “共享”
b.选中 “远程登录”,允许访问的用户选择 “所有用户”
2.如果出现:No such file or directory...
解决办法:
a.启动sshd服务:sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist
b.查看服务的启动,筛选:sudo launchctl list | grep ssh
6. 启动Hadoop
6.1. 格式化namenode
# 格式化namenode
hadoop namenode -format
启动图片如下:
6.2. 启动hadoop
cd ~/Installed/Hadoop/hadoop-2.9.1/sbin
./start-all.sh(不能用sh start-all.sh代替,否则会报错)
使用sh start-all.sh启动,报错如下:
7. 验证&使用
7.1. 验证
启动结束后在shell输入命令 jps 可输出所有java进程及其pid
$ jps
5506 Jps
4164 DataNode
4583 NodeManager
4487 ResourceManager
4297 SecondaryNameNode
4063 NameNode
7.2. 使用
至此,Hadoop环境配置成功,此时可执行下面命令:
hadoop fs -mkdir /testdata 在hdfs根目录下创建一个文件夹 testdata
hadoop fs -ls / 可查看根目录下的文件及文件夹
8. 遇到的问题
8.1. 启动报错
解决方案:
以Mac OS为例:
1.在“系统设置”中,点击 “共享”
2.选中 “远程登录”,允许访问的用户选择 “所有用户”
8.2 使用hadoop命令报错,如下:
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