前言:网上看了很多mac安装hadoop的教程,自己亲自来实际操作一遍。
前提:要已经安装了Java,mac安装java很简单,下载完直接傻瓜式安装就可以,安装完环境变量都设置好,也不用操心啥。
接下来进入安装hadoop:
1.首先要配置ssh,开启mac远程登陆,并将当前用户加入到允许用户登录列表。
1.1选择系统偏好设置–共享,然后如下操作:
1.2避免使用hadoop命令时,多次输入密码。
以下命令一直按回车即可,最后如果报一个警告,直接yes即可。
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
# 验证ssh
ssh localhost
2.下载hadoop
https://archive.apache.org/dist/hadoop/core/hadoop-2.7.2/
2.1在本地创建存放安装hadoop的目录
mkdir /Users/qinlong/App
创建存放数据文件的目录
mkdir /Users/qinlong/Data
将下载完成的hadoop解压到本地目录下
tar -zxvf hadoop-2.7.2.tar.gz -C /Users/qinlong/App
2.2添加环境变量
cd 回到终端
vim ~/.bash_profile
进入编辑模式
export HADOOP_HOME=/Users/qinlong/App/hadoop-2.7.2
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
退出编辑模式,执行如下操作:
source ~/.bash_profile
2.3设置完成查看一下hadoop版本号:
因为我hadoop没从官网下载,会出现一个unknown。
hadoop version
出现以下
Hadoop 2.7.2 Subversion Unknown -r Unknown Compiled by root on 2017-05-22T10:49Z Compiled with protoc 2.5.0 From source with checksum d0fda26633fa762bff87ec759ebe689c This command was run using /Users/qinlong/App/hadoop-2.7.2/share/hadoop/common/hadoop-common-2.7.2.jar
2.4接下来修改hadoop配置文件,配置文件都在Users/qinlong/App/hadoop-2.7.2/etc/hadoop下:
hadoop-env.sh core-site.xml hdfs-site.xml mapred-site.xml yarn-site.xml
2.4.1修改hadoop-env.sh
如果配置文件中没有设置JAVA_HOME路径,则需要设置:
mac查看jdk:在终端输入:/usr/libexec/java_home -V
在配置文件目录下:vim hadoop-env.sh
export JAVA_HOME=Library/Java/JavaVirtualMachines/jdk1.8.0_241.jdk/Contents/Home
如果已经设置了,则加入hadoop路径:
export HADOOP_HOME=/Users/qinlong/App/hadoop-2.7.2
2.4.2修改core-cite.xml文件:
正常情况下,数据被保存在/tmp下,当你重启系统,则会被清理掉,因此需要创建一个专门用来存放数据的目录。
在之前创建的Date目录下:创建hadoop和tmp,如下:
Date/hadoop/tmp
进入配置文件目录:vim core-cite.xml
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
<!--用来指定hadoop运行时产生文件的存放目录 自己创建-->
<property>
<name>hadoop.tmp.dir</name>
<value>file://Users/qinlong/Data/hadoop/tmp</value>
</property>
<property>
<name>fs.trash.interval</name>
<value>1440</value>
</property>
2.4.3配置文件系统hdfs-site.xml
该文件指定与 HDFS 相关的配置信息。需要修改 HDFS 默认的块的副本属性,因为 HDFS 默认 情况下每个数据块保存 3 个副本,而在伪分布式模式下运行时,由于只有一个数据节点,所 以需要将副本个数改为 1;否则 Hadoop 程序会报错。
vim hdfs-core.xml
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<!--不是root用户也可以写文件到hdfs-->
<property>
<name>dfs.permissions</name>
<value>false</value> <!--关闭防火墙-->
</property>
<!-- name node 存放 name table 的目录 -->
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/Users/qinlong/Data/hadoop/tmp/dfs/name</value>
</property>
<!-- data node 存放数据 block 的目录 -->
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/Users/qinlong/Data/hadoop/tmp/dfs/data</value>
</property>
2.4.4配置计算框架mapred-site.xml
文件夹中没有这个文件,如下操作:
mv mapred-site.xml.template mapred-site.xml
然后进入进行配置
vim mapred-site.xml
<property>
<!--指定mapreduce运行在yarn上-->
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
2.4.5配置文件系统yarn-site.xml
vim yarn-site.xml
<property>
<!-- mapreduce 执行 shuffle 时获取数据的方式 -->
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>localhost:18040</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>localhost:18030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>localhost:18025</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>localhost:18141</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>localhost:18088</value>
</property>
2.5 hadoop Namenode格式化
在终端输入:hdfs namenode format
会进行初始化格式操作,结束即可。
2.6 启动hadoop,进入/Users/qinlong/App/hadoop-2.7.2/sbin
./start-all.sh
遇到yes/no?输入yes即可。
2.7 查看5个进程是否启动成功:终端输入jps。
出现五个即可。
2.8在浏览器输入查看集群是否启动成功。
http://localhost:50070/dfshealth.html#tab-overview
http://localhost:18088/cluster
分别出现如下即可:
这样就说明搭建成功了。
总结:
1.搭建环境真的是一件很折磨人的事情,因为你不知道你会出现什么样的问题,因此一步步一定要小心,慢慢来,寻找一个安静的环境,争取一次成功,遇到问题,要去寻找问题出现在哪里,然后去网上寻找答案。
2.走完整个流程,在我电脑上没有出现其他问题,就是第一次我没看到hadoop-env.sh 已经设置了java路径,我在里面又export了一个,然后在进行hdfs格式化时,报了一个:no file的错。基本只要改一下自己的路径就可以成功安装了。
借鉴于大佬,原文很详细,感谢:https://blog.csdn.net/b_aihe/article/details/96650866