MacOS 安装Hadoop3.1.1教程
本文学自
并对其中一些讲得不清楚,以及版本变化(从2.7到3.1)等问题,做出了修正
首先装这个软件管理工具,具体过程在上一篇文章里
这里插一个链接
然后,用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官网上下载最新版本,会快很多。这里发一下链接:
Java装好后,就终于可以安装啦
brew install hadoop
这次是七百多Mb的东西,很快下载好,大功告成!
测试是否安装成功:
1.测试单机模式
单词计数是最简单也是最能体现思想的程序之一,可以称为版”Hello World”,单词计数主要完成功能是:统计一系列文本文件中每个单词出现的次数
创建input目录和目录
input作为输入目录,目录作为输出目录
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///3.1.1//etc//core-site.xml
把原来的
修改为
hadoop.tmp.dir /usr/local/Cellar/hadoop/hdfs/tmp A base for other temporary directories fs.default.name hdfs://localhost:9000
fs..name 保存了的位置,HDFS和组件都需要用到它,这就是它出现在core-site.xml 文件中而不是 hdfs-site.xml文件中的原因
修改-site.xml
文件地址:/usr/local///3.1.1//etc//-site.xml.
把原来的
修改为
mapred.job.tracker localhost:9010
变量.job. 保存了的位置,因为只有组件需要知道这个位置,所以它出现在-site.xml文件中。
修改hdfs-site.xml
文件地址:/usr/local///3.1.1//etc//hdfs-site.xml
把原来的
修改为
dfs.replication 1
变量dfs.指定了每个HDFS数据库的复制次数。 通常为3, 由于我们只有一台主机和一个伪分布式模式的,将此值修改为1。
运行
hadoop namenode -format
./sbin/start-all.sh
成功后,访问 :9870 打开Hdfs的Web界面,可以查看相关的信息
值得注意的是,在3.0以后的版本中,:50070 变为 :9870 用原先的地址会报错。(取自 )
用示例测试
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.统计数据
把原来用于单机模式的测试input文件上传到hdfs中**(目录仍然是在 …/3.1.1/下,千万不要乱动)**
hadoop fs -put ./input input
运行**(目录仍然是在 …/3.1.1/下,千万不要乱动)**
hadoop jar ./libexec/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.1.jar wordcount input 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
都好了