mac下Hadoop环境配置

Hadoop是一个由Apache基金会所开发的分布式系统基础架构。
用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。

下面是mac OSx系统下Hadoop的安装、配置、运行示例和可视化查看。

安装homebrew

Homebrew 是一款开源的软件包管理系统,用以简化 macOS 上的软件安装过程,可以类比于 Windows 上软件管家的一键安装。Homebrew Cask 是 Homebrew 的扩展,借助它可以方便地在 macOS 上安装图形界面程序,即我们常用的各类应用。

在终端输入:

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

当出现如下时耐心等着:

1
HEAD is now at a5b37e3b Merge pull request #3201 from MikeMcQuaid/git-coretap-tests

直到:

1
==> Installation successful!

安装成功!

安装homebrew cask

在终端输入:

1
brew install caskroom/cask/brew-cask

若出错,尝试以下来安装:

1
brew tap caskroom/cask

ps:没有安装Xcode的情况下会有错误提示,此时在终端中输入xcode-select--install,在弹出的窗口选择install以安装Commnd Line Tools, 路径为 /Library/Developer/CommandLineTools,不过建议安装Xcode

java安装/升级

用brew安装的Hadoop是最新版本,所需java最低版本为1.7.0,但mac自带的java版本为1.6.0
如果不确定自己的版本,可在终端输入 java -version查看
mac在java下有两种方式升级:

  • 下载java更新包在本地安装
  • 通过brew cask安装
    既然下了brew cask为什么还要麻烦地去下载再手动安装呢??
    老规矩,在终端输入:
1
2
brew update && brew upgrade brew-cask && brew cleanup && brew cask cleanup$ brew cask install java
brew cask install java

啊哦在输入第一条命令后就出错了:

1
Error: No available formula with the name "brew-cask"

上Stack Overflow一查,解决方法:

1
brew install brew-cask-completion

接着输入上面的第二条命令应该就好了

安装好竟然还会出现一杯啤酒,超可爱

配置SSH

为了保证远程登录管理 Hadoop 及 Hadoop 节点用户共享的安全性,Hadoop 需要配置使用 SSH 协议

首先

系统偏好设置->共享->打开远程登录服务->右侧选择允许所有用户访问

在终端输入

1
ssh localhost

若返回

1
Last login: Sun Sep 24 13:12:04 2017

则配置成功,若不成功则继按以下顺序输入:(成功后也需要输入以下代码以避免每次登陆输入密码)

1
2
3
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
ssh localhost

然后应该就好了
原理是在当前用户目录下的.ssh文件夹(是一个隐藏文件)中生成一个id_rsa文件,然后授权你的公钥到本地可以避免每次登陆时都要询问你的密码

安装Hadoop

1
brew install hadoop

出现以下这样就安装完成了🍺

Hadoop环境配置

配置 hadoop-env.sh

打开文件 usr/local/Cellar/hadoop/2.8.1/libexec/etc/hadoop,注意将里面的2.8.1换成自己的hadoop版本号
打开hadoop-env.sh文件
将里面的

1
export HADOOP_OPTS="$HADOOP_OPTS -Djava.net.preferIPv4Stack=true"

修改为

1
export HADOOP_OPTS="$HADOOP_OPTS -Djava.net.preferIPv4Stack=true -Djava.security.krb5.realm= -Djava.security.krb5.kdc="

配置 yarn-env.sh

打开刚才文件夹里的yarn-env.sh文件
加入

1
YARN_OPTS="$YARN_OPTS -Djava.security.krb5.realm=OX.AC.UK -Djava.security.krb5.kdc=kdc0.ox.ac.uk:kdc1.ox.ac.uk"

配置 core-site.xml

配置hdfs的地址和端口号,打开对应文件,在标签中间加入

1
2
3
4
<property>  
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>

配置 hdfs-core.xml

标签中添加

1
2
3
4
<property>
<name>dfs.replication</name>
<value>1</value>
</property>

配置 mapred-site.xml

设置MapReduce中jobtracker的地址和端口号
同理添加

1
2
3
4
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>

配置 yarn-site.xml

同理添加

1
2
3
4
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>

配置hdfs-site.xml

hdfs备份方式默认值是3,在伪分布式系统中需要修改为1,同理添加

1
2
3
4
 <property>
<name>dfs.replication</name>
<value>1</value>
</property>

格式化HDFS

在终端输入

1
2
rm -rf /tmp/hadoop-tanjiti #如果之前安装过需要清除
hadoop namenode -format

启动Hadoop

进入sbin目录(按国际惯例,把版本号换成自己的)

1
cd /usr/local/Cellar/hadoop/2.8.1/sbin
  • 启动HDFS
1
./start-dfs.sh
  • 启动MapReduce
1
./start-yarn.sh
  • 检查启动情况
1
jps

出现以下结果

大功告成🍻
但每次执行命令都要进入sbin目录下,为了方便可以配置一下Hadoop环境变量

1
sudo vim /etc/profile

i进入编辑模式,然后加入如下:

1
2
export HADOOP_HOME=/usr/local/Cellar/hadoop/2.8.1  #你Hadoop的安装路径
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

esc后按:wq!保存退出 然后输入以下命令使文件生效

1
source /etc/profile

然后就可以愉快的在根目录下使用start-dfs.sh来启动Hadoop了

运行示例

进入目录/usr/local/Cellar/hadoop/2.8.1/libexec/share/hadoop/mapreduce/可运行示例计算π的值:

1
hadoop jar hadoop-mapreduce-examples-2.8.1.jar pi 5 5

出现如下结果:

可视化查看

在IntelliJ下运行hadoop程序

参考博客: http://blog.csdn.net/wk51920/article/details/51686337
一步步跟着做即可

相关博文:
mac下Hive+MySql环境配置

参考博客


相关文章
基于Hadoop的文档倒排索引
基于Hadoop的股票新闻标题词频统计
基于Hadoop的股票新闻标题舆情分析