Mac Homebrew 安装 Hadoop

一、安装 Java 和 Hadoop

brew install Java
brew install Hadoop

java -version 和 hadoop version 来查看安装版本及测试正常(PS:Java 和 Hadoop 的环境变量无需变动)

二、配置SSH(免密登录)

因为安装hadoop需要远程登入的功能,所以需要安装ssh工具,但Mac下自带ssh,所以不需要安装ssh。
首先在系统里打开远程登录,位置在 System Preferences -> Sharing 中,左边勾选 Remote Login ,右边选择 Only there users,并添加当前用户。
方法一:打开Terminal输入 ssh localhost,输入 yes 然后输入密码确认后,看到 Last login: 字样为ssh成功。
方法二:

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa # 生成公钥和私钥
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys # 将公钥追加到文件
chmod 0600 ~/.ssh/authorized_keys # 修改相关权限

ssh localhost用来测试

三、修改配置文件

/usr/local/Cellar/hadoop/3.1.1/libexec/etc/hadoop 主要都在这个目录下

  1. hadoop-env.sh
    PS:亲测无需修改 JAVA_HOME 和 HADOOP_HOME等变量(有如有问题可以修改测试,直接设置 JAVA_HOME 的路径,不要用$JAVA_HOME 代替,因为 Hadoop 对系统变量的支持不是很好)。
    查看Java安装路径:

/usr/libexec/java_home

vim hadoop-env.sh

找到 # export JAVA_HOME= ,改参数如下:

export JAVA_HOME={your java home directory}

把 {your java home directory} 改成你上面查到的 Java 路径,记得去掉注释 # 。比如 export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home 。

同理修改下面两个参数:

export HADOOP_HOME=/usr/local/Cellar/hadoop/3.1.1/libexec

根目录应该不是 /usr/local/Cellar/hadoop/3.1.1 ,可通过 hadoop version 来测试

export HADOOP_CONF_DIR=/usr/local/Cellar/hadoop/3.1.1/libexec/etc/hadoop

  1. core-site.xml
    设置 Hadoop 的临时目录和文件系统,localhost:9000 表示本地主机。如果使用远程主机,要用相应的 IP 地址来代替,填写远程主机的域名,则需要到 /etc/hosts 文件去做 DNS 映射。

<configuration>

<property>
<name>hadoop.tmp.dir</name>
<value>/data/hadoop/tmp</value> #可自行修改
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>

fs.default.name 保存了NameNode的位置,HDFS和MapReduce组件都需要用到它,这就是它出现在core-site.xml 文件中而不是 hdfs-site.xml文件中的原因,在该处配置HDFS的地址和端口号。

  1. hdfs-site.xml
    注意 name 和 data 的路径都要替换成本地的路径:

<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>

<property>
<name>dfs.permissions</name>
<value>false</value>
</property>

<property>
<name>dfs.namenode.name.dir</name>
<value>/data/hadoop/name</value> #可自行修改
</property>

<property>
<name>dfs.datanode.data.dir</name>
<value>/data/hadoop/data</value> #可自行修改
</property>
</configuration>

变量dfs.replication指定了每个HDFS默认备份方式通常为3, 由于我们只有一台主机和一个伪分布式模式的DataNode,将此值修改为1。

  1. mapred-site.xml
    将 yarn 设置成数据处理框架:

<configuration>

<property>

<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>

  1. yarn-site.xml
    配置数据的处理框架 yarn:

<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>localhost:9000</value>
</property>
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
</configuration>

四、运行

接下来用到的命令,如 hadoop、hdfs、start-all.sh、stop-all.sh 等,都已经配置到环境变量里了,所以直接使用即可。(查看位置:切换到 /usr/local/Cellar/hadoop/3.1.1//usr/local/Cellar/hadoop/3.1.1/libexec/,执行根目录下 bin 或 sbin 下的文件时,实际上执行的是 libexec/bin或 libexec/sbin 下的文件,查看脚本内容即可发现)。
1.格式化文档系统:hadoop namenode -formathdfs namenode -format
2.启动 NameNode 和 DataNode:

start-dfs.sh

现在可以看到 Overview 界面了,NameNode 和 DataNode - http://localhost:9870
PS:Hadoop3.0中namenode的默认端口配置发生变化:从50070改为9870
3.启动 ResourceManager 和 NodeManager:

start-yarn.sh

现在可以看到 All Applications 界面:
ResourceManager – http://localhost:8088
NodeManager – http://localhost:8042

在 Terminal执行jps测试。

直接执行 start-all.sh 等同于同时执行 start-dfs.sh 和 start-yarn.sh。退出时执行 stop-all.sh,或者:stop-yarn.sh 和 stop-dfs.sh。

五、WARN(可忽略)

在log中会显示警告 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable的提醒,是关于 Hadoop 本地库的, Hadoop本地库是为了提高效率或者某些不能用Java实现的功能组件库。

六、基本操作

Hadoop 的安装启动就完成啦!接下来就可以通过一些 shell 命令来操作 Hadoop 下的文件了,例如:

hadoop fs -ls /        #查看根目录下的文件及文件夹
hadoop fs -mkdir -p /data #在根目录下创建一个文件夹data(这个路径是虚拟的,随便填写,并不会在本机看到,可通过页面你控制台中 Utilities -> browse the file system 查看) PS: 2.x之后的版本命令需要加参数 -p
hdfs dfs -put /root/data /data #上传本地目录文件到hadoop目录
hdfs dfs -copyFromLocal /root/data/person.txt /data #copy本地文件到hadoop目录
hadoop fs -rm /.../... #移除某个文件
hadoop fs -rm -r /... #及联删除文件夹

七、常见错误

1.datanode没启动
建议直接把文件name 和 data下的文件删了,然后重启hadoop。查看链接:https://blog.csdn.net/ludonqin/article/details/51396187

参考链接:
Mac 安装 Hadoop 3.x
【干货】简单三步在Mac上安装Hadoop
Mac OS X 上搭建 Hadoop 开发环境指南
Mac下使用homebrew安装Hadoop-3.1.1记录
【Hadoop踩雷】Mac下安装Hadoop3以及Java版本问题

推荐阅读更多精彩内容