MAC安装Hadoop3.2.1及运行第一个程序教程(超级详细)

一.安装homebrew(已安装可跳过)

在终端输入下面代码即可。

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

二.安装jdk(已安装可跳过)

注意,这里要用JAVA8或以下版本,否则后续 ResourceManager 和 NodeManager会出问题。

brew install java8

可用java -version命令查看java版本,楼主用的是openjdk version “1.8.0_242”

三.设置SSH免密登陆

1)系统偏好设置–>共享

勾选远程登录,所有用户
图1 勾选远程登录,所有用户

2)打开终端,输入
ssh localhost

显示需要输入密码,把密码输入后,出现时间,代表登陆成功。
在终端输入ssh localhost
但是hadoop中需要免密登录,比如在启动datanode、namenode时都需要免密登录,如果不设置,则会出现权限不允许(Permission denied)的错误提示,导致无法启动DataNode等。
所以我们需要设置一下,在终端输入:

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys

之后再使用ssh localhost命令,我们会发现不用输入密码,直接可以登录。
不用输密码即可登录

四.安装hadoop

同样是在终端使用brew进行安装

brew install hadoop

如果长时间卡在 Updating Homebrew 这个步骤,使用control+c中断此次更新即可,显示 ^C,就代表已经取消了 Updating Homebrew 操作。再等待一会儿,就会开始下载hadoop了
安装ing
安好后,可在终端输入命令 hadoop 进行查看:
在这里插入图片描述
此时就已经安好了Hadoop的单机模式。

五.伪分布式配置

接下来配置的文件均在 /usr/local/Cellar/hadoop/3.2.1/libexec/etc/hadoop 路径中,文件可使用编辑器打开,楼主这里用sublime

1)core-site.xml配置

在文件的<configuration></configuration>标签对内输入以下配置信息,然后保存关闭。

<property>
     <name>hadoop.tmp.dir</name> 
     <value>file:/usr/local/Cellar/hadoop/3.2.1/libexec/tmp</value>
  </property>
  <property>
     <name>fs.defaultFS</name>
     <value>hdfs://localhost:8020</value>
  </property>

如图所示:
在这里插入图片描述

2)hdfs-site.xml配置

在文件的<configuration></configuration>标签对内输入以下配置信息,然后保存关闭。

<property>
         <name>dfs.replication</name>
         <value>1</value>
    </property>
    <property> 
         <name>dfs.namenode.name.dir</name>
         <value>file:/usr/local/Cellar/hadoop/3.2.1/libexec/tmp/dfs/name</value>
    </property>
    <property>
         <name>dfs.namenode.data.dir</name>
         <value>file:/usr/local/Cellar/hadoop/3.2.1/libexec/tmp/dfs/data</value>
    </property>
3)mapred-site.xml配置

在文件的<configuration></configuration>标签对内输入以下配置信息,然后保存关闭。

<configuration>
    <property>
         <name>mapreduce.framework.name</name>
         <value>yarn</value>
     </property>
</configuration>
4)yarn-site.xml配置

在文件的<configuration></configuration>标签对内输入以下配置信息,然后保存关闭。

<property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</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>
6)环境变量配置

在终端输入open ~/.bash_profile ,对环境变量文件进行编辑,添加以下信息:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home
export CLASSPAHT=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export HADOOP_HOME=/usr/local/Cellar/hadoop/3.2.1/libexec
export HADOOP_COMMON_HOME=$HADOOP_HOME
export PATH=$JAVA_HOME/bin:$PATH:$HADOOP_HOME/bin:/usr/local/Cellar/scala/bin

在终端输入source ~/.bash_profile ,使刚刚修改的环境变量生效

六.运行

1)初始化(仅第一次安装时需要)

先进入到 /usr/local/Cellar/hadoop/3.2.1/libexec/bin 路径中:

cd /usr/local/Cellar/hadoop/3.2.1/libexec/bin

然后对文件系统进行格式化:

hdfs namenode -format

最后出现如下图所示内容则成功:在这里插入图片描述

2)启动NameNode和datanode

然后进行启动NameNode和datanode
进入 /usr/local/Cellar/hadoop/3.2.1/libexec/sbin 路径中:

cd /usr/local/Cellar/hadoop/3.2.1/libexec/sbin

输入:

./start-dfs.sh

结果如下:
在这里插入图片描述
这时候NameNode和DataNode都已经启动成功了,可在终端输入命令jps查看启动情况:
在这里插入图片描述
到此为止,我们可以在网页中看到Overview页面了。
在浏览器上输入
http://localhost:9870/dfshealth.html#tab-overview
如下图所示:
在这里插入图片描述

3)启动ResourceManager 和 NodeManager

接下来启动 ResourceManager 和 NodeManager:
先进入 /usr/local/Cellar/hadoop/3.2.1/libexec/sbin 路径中:

cd /usr/local/Cellar/hadoop/3.2.1/libexec/sbin

然后在终端输入:

./start-yarn.sh

终端输入jps命令查看是否启动成功:
在这里插入图片描述
(在这里我遇到了一个问题,顺便记录一下:
一开始我的NodeManager启动后过了一会儿总是会闪退,查对应的log日志显示这个错误
java.lang.NoClassDefFoundError: javax/activation/DataSource
搜索发现有两个原因会导致这个错误:
1)是JAVA版本不对,但是我用的是8,显然没问题,所以排除。
2)是缺失 javax.activation.jar。解决办法:下载javax.activation.jar, 然后复制到Hadoop的lib目录下,我的目录是:/usr/local/Cellar/hadoop/3.2.1/libexec/share/hadoop/common/lib
然后重新启动yarn,发现解决了问题,启动成功。)
启动成功后可以在浏览器输入 http://localhost:8088/cluster ,出现如下界面:在这里插入图片描述

4)运行Hadoop自带的Wordcount程序,统计字符出现的个数。
(1)新建文件夹

首先在终端输入:

 hadoop fs -mkdir /input 

这是在hadoop文件系统的根目录下新建一个input文件夹。类似的,也可以新建其他的文件或文件夹。
注意:文件夹在这里找:
http://localhost:9870/explorer.html#/
(这里我遇到了问题:
mkdir: Cannot create directory /input. Name node is in safe mode.
意思是安全模式下HDFS文件只接受读取文件,不能进行创建修改等变更请求。
在Hadoop的bin目录下终端输入命令退出安全模式即可:

hdfs dfsadmin -safemode leave

(2)查看hadoop下面的所有目录

终端输入命令:

hadoop fs -ls /

结果如下图:
在这里插入图片描述

(3)文件上传

在当前目录下新建一个LICENSE.txt文件上传即可,内容随意。

hadoop fs -put LICENSE.txt /input
(4)查看上传的文件
hadoop fs -ls /input

结果如下图:
在这里插入图片描述

(5)运行计算LICENSE.txt里面的单词

因为楼主步骤(2)中显示这里已经有了一个output夹,所以这里新建一个output2文件夹

hadoop jar /usr/local/Cellar/hadoop/3.2.1/libexec/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.1.jar wordcount /input /output2

最后三个参数的意思如下:wordcount是测试用例的名称,/input表示输入文件的目录,/output表示输出文件的目录
(⚠️输出文件必须是一个不存在的文件,如果指定一个已有目录作为hadoop作业输出的话,作业将无法运行。如果想让hadoop将输出存储到一个目录,它必须是不存在的目录,应该是hadoop的一种安全机制,防止hadoop重写有用的文件)

(6)查看output2文件夹
hadoop fs -ls /output2

结果如下图:在这里插入图片描述

(7)查看看part-r-00000里面的结果
hadoop fs -cat /output/part-r-00000

结果如下:在这里插入图片描述

(8)下载文件到本地
hadoop fs -copyToLocal /output/part-r-00000
(9)删除文件防止下次运行报错:
hadoop fs -rm -R /output

到此为止,第一个Hadoop程序就终于完成了!

附一些hadoop命令:
1)要从HDFS中删除文件,可以使用以下命令:

hadoop fs -rm -r -skipTrash /path_to_file/file_name

2)要从HDFS中删除文件夹,可以使用以下命令:

hadoop fs -rm -r -skipTrash /folder_name
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值