Mac OS使用brew安装Hadoop3.x及环境配置
#Java/Hadoop安装
以下内容针对的是macOS X系统下安装配置Hadoop,参考了其他前辈的经验以及尚硅谷的大数据培训视频
Hadoop安装
1.1安装准备一:Java安装
Hadoop是基于Java开发的,所以安装Hadoop前需要安装好Java,也即JDK。直接在Java官网下载DMG安装包,安装步骤安装即可,结束后在终端输入命令测试是否安装成功。
$ java -version
1.2安装准备二:homebrew安装
终端输入命令:
/bin/zsh -c “$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)”
(速度较快,中文指引)
参考链接:HomeBrew Mac OS X 的包管理器
安装速度要看当前网络状况好坏,一般5-10分钟即可。
安装brew完成。
1.3安装Hadoop
采用homebrew安装,终端输入:
brew install hadoop
至此,Hadoop安装成功。Hadoop环境变量也无需设置。运行Hadoop测试:
hadoop version
没有报错即安装成功。
2.测试Hadoop是否安装成功
Hadoop有三种安装模式:单机模式,伪分布式模式,分布式模式。
分布式模式需要在多台电脑上面测试,这里只测试前面两种,即单机模式和伪分布式模式。
2.1测试单机模式
2.1.1 grep官方案例:
- 打开Hadoop文件夹
终端输入cd /usr/local/Cellar/hadoop/3.3.0
$ mkdir input
$ cp libexec/etc/hadoop/*.xml input/
$ bin/hadoop jar libexec/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.0.jar grep input/ output 'dfs[a-z.]+'
$ cat output/*
部分截图如下:
注意:Hadoop/3.3.0目录下事先不能有output文件夹,否则会报文件已存在异常FileAlreadyExistsException
2.1.2 官方WordCount案例
单词计数wordcount是最简单也是最能体现MapReduce思想的程序之一,可以称为MapReduce版”Hello World”,单词计数主要完成功能是:统计一系列文本文件中每个单词出现的次数.
- 创建wcinput目录
$ cd /usr/local/Cellar/hadoop/3.3.0
$ mkdir wcinput
- 在wcinput文件夹下创建wc.input文件
$ cd wcinput
$ touch wc.input
- 编辑wc.input文件
$ vim wc.input
在文件中键入如下内容(可输入任意单词)
hadoop yarn
hadoop mapreduce
atguigu
atguigu
保存退出
:wq
4. 回到hadoop/3.3.0目录,执行程序
$ hadoop jar libexec/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.0.jar wordcount wcinput/ wcoutput
- 查看结果
$ cd wcoutput
$ cat part-r-00000
atguigu 2
hadoop 2
mapreduce 1
yarn 1
2.2 测试伪分布式模式
2.2.1 设置远程登录(此步可跳过)
- 网络共享设置
准备ssh链接localhost
参考链接:MacOS-SSH连接LocalHost
“远程登录“选择”所有用户“。
1.终端输入:ssh-keygen
然后一直回车即可。
输入命令后,第一个提示问你存在哪里,默认就好,直接回车。第二个问题让你输入一个密码,这个密码就是以后别人在拥有私钥的情况下,进入你主机需要的密码。输入完再输入一次,就会生成一个钥匙跟一把锁。
d_rsa叫私钥,也就是钥匙,id_rsa.pub叫公钥。
这里需要注意的一点是,在建立钥匙的过程中,一直按enter就可以了,如果你输入了密码,之后,在SSH连接的时候,依然还要输入这个密码,非常麻烦,因为这次配SSH是为了在mac上单Hadoop的伪分布式,要的效果就是不输入任何东西,直接连接。所以,请一直enter,默认或者用户目录下创建 .ssh文件夹,里面放着公钥和密钥。
2.终端输入:
cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys
没有返回任意值即表示成功,再次输入:ssh localhost
没有提示输入密码即表示配置成功。
- java_home环境变量配置(此步可跳过)
(在macOS X上不需要单独配置java_home环境变量。)
翻译:
从技术上讲,唯一需要的环境变量是JAVA_HOME。
其他的都是可选的。然而,默认的情况可能不是这样
优先。许多网站在Hadoop之外配置这些选项,
比如在/etc/profile.d中
要使用的java实现。默认情况下,这个环境变量在除OS X之外的所有平台上都是必需的!
2.2.2配置相关文件
- 配置:core-site.xml
可以直接在/usr/local/Cellar/hadoop/3.3.0/libexec/etc/hadoop
文件夹下找到该xml文件,用任意文本编辑器修改内容,我自己用的sublime。而后再用终端vim命令打开文件,不做修改保存退出即可。
<configuration>
<!-- 指定HDFS中NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
<!-- 指定Hadoop运行时产生的文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/Cellar/hadoop/3.3.0/data/tmp</value>
</property>
</configuration>
- 配置hdfs-site.xml
<configuration>
<!-- 指定HDFS副本上数量 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
- 启动集群
3.1 格式化NameNode(第一次启动时格式化,以后不要总格式化)
$ bin/hdfs namenode -format
3.2 启动NameNode,在Hadoop/3.3.0/
目录下
$ sbin/hadoop-daemon.sh start namenode
3.3 使用jps
查看是否启动成功
3.4 启动datanode
$ sbin/hadoop-daemon.sh start datanode
3.5 使用jps
查看是否启动成功
若namenode启动不成功,可以尝试3.1步多次格式化namebode。
3.6查看集群
用浏览器打开http://localhost:9870
(Hadoop2.x默认端口是50070,3.x默认端口是9870)
部署成功。