MacOS 安装Hadoop3.1.1教程

本文学自 http://dblab.xmu.edu.cn/blog/820-2/
并对其中一些讲得不清楚,以及版本变化(从2.7到3.1)等问题,做出了修正

首先装Homebrew这个软件管理工具,具体过程在上一篇文章里
这里插一个链接
https://blog.csdn.net/Xurui_Luo/article/details/84191947

然后,用ssh登陆本地

ssh-keygen -t rsa -P "" //这一行运行完后,再出现最后带冒号时按Enter
cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys

这样就可以生成ssh公钥,接下来进行测试登录本地是否成功

ssh localhost

若登陆成功,则显示结果如下

Last login: Mon Feb 29 18:29:55 2016 from ::1

但是我的一开始是这样:

ssh: connect to host localhost port 22: Connection refused

经过百度,最终找到问题是在系统偏好设置中:
解决方法是选择系统偏好设置->选择共享->点击远程登录
这样再运行

ssh localhost

结果就出来了

随后,进行安装

brew install hadoop

随后,我并没有成功,而是得到反馈:

hadoop: Java 1.8+ is required to install this formula.
JavaRequirement unsatisfied!
You can install with Homebrew Cask:
 brew cask install java
You can download from:
 https://www.oracle.com/technetwork/java/javase/downloads/index.html
Error: An unsatisfied requirement failed this build.

根据提示,我是需要安装Java
因此

brew cask install java

这里吐槽一下速度,就一百多Mb的东西,硬是安装了很久很久,如果有人觉得慢可以直接在Java官网上下载最新版本,会快很多。这里发一下链接:
https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

Java装好后,就终于可以安装Hadoop啦

brew install hadoop

这次是七百多Mb的东西,很快下载好,大功告成!

测试Hadoop是否安装成功:

1.测试单机模式
单词计数wordcount是最简单也是最能体现MapReduce思想的程序之一,可以称为MapReduce版”Hello World”,单词计数主要完成功能是:统计一系列文本文件中每个单词出现的次数

创建input目录和output目录
input作为输入目录,output目录作为输出目录

cd /usr/local/Cellar/hadoop/3.1.1/
mkdir input 
mkdir output

在input文件夹中创建两个测试文件file1.txt和file2.txt

cd input
echo 'hello world' > file1.txt
echo 'hello hadoop' > file2.txt

运行示例检测单机模式(注意目录不要随意变,在3.1.1下)

hadoop jar ./libexec/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.1.jar wordcount ./input ./output

显示结果(注意目录不要随意变,在3.1.1下)

more output/part-r-00000

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

2.测试伪分布式模式

测试为分布模式前,需要修改相关的配置文件,把之前的单机模式修改成伪分布式模式

修改Core-site.xml
文件地址:/usr/local/Cellar/hadoop/3.1.1/libexec/etc/hadoop/core-site.xml
把原来的

<configuration>
</configuration>

修改为

<configuration>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/usr/local/Cellar/hadoop/hdfs/tmp</value>
        <description>A base for other temporary directories</description>
    </property>
    <property>
        <name>fs.default.name</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>

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

修改mapred-site.xml

文件地址:/usr/local/Cellar/hadoop/3.1.1/libexec/etc/hadoop/mapred-site.xml.template
把原来的

<configuration>
</configuration>

修改为

<configuration>
    <property>
        <name>mapred.job.tracker</name>
        <value>localhost:9010</value>
    </property>
</configuration>

变量mapred.job.tracker 保存了JobTracker的位置,因为只有MapReduce组件需要知道这个位置,所以它出现在mapred-site.xml文件中。

修改hdfs-site.xml

文件地址:/usr/local/Cellar/hadoop/3.1.1/libexec/etc/hadoop/hdfs-site.xml
把原来的

<configuration>
</configuration>

修改为

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

变量dfs.replication指定了每个HDFS数据库的复制次数。 通常为3, 由于我们只有一台主机和一个伪分布式模式的DataNode,将此值修改为1。

运行

hadoop namenode -format
./sbin/start-all.sh

成功后,访问 http://localhost:9870 打开Hdfs的Web界面,可以查看相关的信息

值得注意的是,在3.0以后的版本中,http://localhost:50070 变为 http://localhost:9870 用原先的地址会报错。(取自 https://stackoverflow.com/questions/19641326/http-localhost50070-does-not-work-hadoop0

用示例测试

1.估计圆周率PI的值

hadoop jar ./libexec/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.1.jar pi 2 5

运行结果如下:

Estimated value of Pi is 3.60000000000000000000

2.wordcount统计数据

把原来用于单机模式的测试input文件上传到hdfs中**(目录仍然是在 …/3.1.1/下,千万不要乱动)**

hadoop fs -put ./input input

运行wordcount**(目录仍然是在 …/3.1.1/下,千万不要乱动)**

hadoop jar ./libexec/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.1.jar wordcount input output

查看output的结果文件**(目录仍然是在 …/3.1.1/下,千万不要乱动)**

hadoop fs -tail output/part-r-00000

得到的结果是:
在这里插入图片描述
最后关闭伪分布式

./sbin/stop-all.sh

2019.4 补充

过一段时间没碰,再使用,出了以下问题:

Call From red-2.local/192.168.1.100 to localhost:9000 failed on connection exception: java.net.ConnectException: Connection refused; For more details see:  http://wiki.apache.org/hadoop/ConnectionRefused

惊了

在网上各种找问题之后,还是 大力出奇迹

命令行输入

hadoop namenode -format

都好了

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值