碳基体

奋斗在产品安全第一线的安全妹子

大数据之mac安装hadoop+Eclipse开发环境

前言:

实在受够了在两台机器跑来跑去的操作了(在windows上用eclipse编辑源码(java渣不用IDE会死掉)后编译导出jar包(实在慢),再上传到ubuntu上hadoop运行的悲催步骤,虽然后续想到了命令行编译(速度上来了)的方法,但仍需要在两台机器来回切换,很轴的我,决定找一种不用两台机器切换的一站式开发方法,因此有了本文。


总的环境配置:

OS:mac os x 10.10.3

Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)

Eclipse 4.4.2

Hadoop 2.7

Xcode 6.3.2

homebrew


安装运行过程如下


一、预装依赖环境

1. JAVA

/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/

2. homebrew

ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"

3. ssh环境

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

cat ~/.ssh/id_dsa.pub >>~/.ssh/authorized_keys


二、安装及配置hadoop

1. 安装hadoop

brew install hadoop

回显,安装成功,注意hadoop安装目录 /usr/local/Cellar/hadoop/2.7.0/libexec



==> Downloading https://www.apache.org/dyn/closer.cgi?path=hadoop/common/hadoop-

==> Best Mirror http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.7.0/hadoo

######################################################################## 100.0%

==> Caveats

In Hadoop's config file:

  /usr/local/Cellar/hadoop/2.7.0/libexec/etc/hadoop/hadoop-env.sh,

  /usr/local/Cellar/hadoop/2.7.0/libexec/etc/hadoop/mapred-env.sh and

  /usr/local/Cellar/hadoop/2.7.0/libexec/etc/hadoop/yarn-env.sh

$JAVA_HOME has been set to be the output of:

  /usr/libexec/java_home

==> Summary

?  /usr/local/Cellar/hadoop/2.7.0: 6297 files, 324M, built in 2.3 minutes


2. 配置hadoop

与linux上配置相似 大数据之hadoop伪集群搭建与MapReduce编程入门

 (1)配置hadoop-env.sh

vim /usr/local/Cellar/hadoop/2.7.0/libexec/etc/hadoop/hadoop-env.sh

编辑

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

export HADOOP_OPTS="${HADOOP_OPTS} -Djava.security.krb5.realm= -Djava.security.krb5.kdc="

export HADOOP_OPTS="${HADOOP_OPTS} -Djava.security.krb5.conf=/dev/null"

(2)配置yarn-env.sh

vim /usr/local/Cellar/hadoop/2.7.0/libexec/etc/hadoop/yarn-env.sh

编辑

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

(3)配置core-site.xml

vim /usr/local/Cellar/hadoop/2.7.0/libexec/etc/hadoop/core-site.xml

编辑

   <property>

            <name>fs.defaultFS</name>

            <value>hdfs://localhost:9000</value>

  </property>

(4)配置hdfs-site.xml

vim /usr/local/Cellar/hadoop/2.7.0/libexec/etc/hadoop/hdfs-site.xml

编辑

   <property>

            <name>dfs.replication</name>

            <value>1</value>

   </property>

(5)配置mapred-site.xml

cp /usr/local/Cellar/hadoop/2.7.0/libexec/etc/hadoop/mapred-site.xml.template /usr/local/Cellar/hadoop/2.7.0/libexec/etc/hadoop/mapred-site.xml

vim /usr/local/Cellar/hadoop/2.7.0/libexec/etc/hadoop/mapred-site.xml

编辑

   <property>

      <name>mapreduce.framework.name</name>

      <value>yarn</value>

   </property>

(6)配置yarn-site.xml

vim /usr/local/Cellar/hadoop/2.7.0/libexec/etc/hadoop/yarn-site.xml

编辑

   <property>

               <name>yarn.nodemanager.aux-services</name>

               <value>mapreduce_shuffle</value>

   </property>


3. 格式化dfs

rm -rf /tmp/hadoop-tanjiti 如果曾经安装过,需要清除

hadoop namenode -format


4.启动

启动hdfs

start-dfs.sh

启动mapreduce

start-yarn.sh

检查启动情况

jps

结果如下

17632

20464 NameNode

20991 Jps

20665 SecondaryNameNode

20870 ResourceManager

20552 DataNode

20967 NodeManager


5. 检查mapreduce是否能正常运行

运行hadoop自带实例

hadoop jar /usr/local/Cellar/hadoop/2.7.0/libexec/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.0.jar pi 2 5


我们可以通过以下web接口查看mapreduce任务

http://localhost:8088 Cluster Status 这个接口非常有用

http://localhost:50070/ HDFS status

http://localhost:50090 secondaryNamenode

三、安装eclipse+hadoop开发环境

1. 安装eclipse

https://www.eclipse.org/ 

2. 安装fatjar 插件

http://kurucz-grafika.de/fatjar

如果报错不兼容,安装Eclipse 2.0 style plugin support

3. 安装 及配置 hadoop 2x eclipse 插件

(1)下载对应版本的jar包放在 eclipse plugins 安装目录下,重启eclipse即可

https://github.com/winghc/hadoop2x-eclipse-plugin

(2)配置hadoop安装目录

(3)打开mapreduce工作空间

 

 (4)添加hadoop地址

按红色框框操作

Location name随便填

DFS Master 端口为 hdfs://localhost:9000 地址

 

添加成功后,可以在DFS Locations看到HDFS里的内容

    三、实战-仍然使用WordCount例子

1. 编辑源码

添加蓝框里的文件,源码加配置文件(如果不添加配置文件,会报各种错误)

配置文件

/usr/local/Cellar/hadoop/2.7.0/libexec/etc/hadoop/

下的

core-site.xml hdfs-site.xml log4j.properties

  

2. 添加WordCount的数据源文件

选择文件后,reconnect

 可以看到添加的数据文件

 

3. 运行

指定输入文件路径与输出文件路径并运行



  运行结果如下,同样reconnect一下就能看到结果了

  

 四、问题纪录

在mac上安装hadoop开发环境,几乎花费了一个周六,当然大多数时间都是由于家里的网络太破了处于等待下载中。

在这过程中,顺便把mac操作系统更新了(有一年多没更新了),xcode、homebrew都更新了,整理系统与整理衣橱一样的让人开心,当然也遇到了一堆的问题

1. data node无法启动——刚开始以为是java不兼容的原因,查了很久,后来发现删除hdfs遗留文件,重新格式化,重新启动就可以了

2. fatjar插件不兼容——安装Eclipse 2.0 style plugin support

3. eclipse-hadoop插件没法更新HDFS的内容——重启eclipse,reconnect

4. eclipse运行找不到输入文件路径——添加配置文件

5. 讨厌的警告,虽然不影响实际运行,但总和镜子上的污点一样让人忍不住要擦掉 (在这个问题上花费了很多时间)

WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

查看 Native Libraries Guard官方文档,结果说不支持Mac OS X平台

 不死心,网上查 方法(hadoop 2.4的解决方案),需要patch后重新编译,可惜编译没通过,于是放弃了,望成功的同学告知



参考:

http://dongfeiwww.com/hadoop/2014/09/05/hadoop-on-mac/

http://blog.csdn.net/genghaihua/article/details/44726523

http://www.powerxing.com/hadoop-build-project-using-eclipse/

来源:碳基体

评论