环境:

  • Mac OSX: 10.9.5
  • Hadoop: 2.6.0
  • Java: 1.7.0_71 (1.8.0_25)

大数据是未来的趋势,要顺势而学之。

本文是参考Hadoop文档,但其描述为Linux写的。所以Mac是否适用容我来验证一下。 而且Hadoop的官方测试JDK只支持到1.7.0, 1.8.0是否成功也一起试了。

2014-12-05 Update: 1.8.0 虽然支持,但在用Maven编译Native Library的时候遇到很多 问题。所以最好转回1.7.0_71。

参考:

  • http://hadoop.apache.org/docs/r2.6.0/hadoop-project-dist/hadoop-common/SingleCluster.html
  • http://wiki.apache.org/hadoop/HadoopJavaVersions

从理工大的镜像下载最新的版本, 非常感谢理工大对新技术的支持!

http://mirror.bit.edu.cn/apache/hadoop/common/

解压后进入 hadoop-2.6.0,后面的操作都在此目录中进行。

编辑 etc/hadoop/hadoop-env.sh

#export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home
# 假设hadoop-2.6.0 放在/apps/dev/ 中
export HADOOP_PREFIX=/apps/dev/hadoop-2.6.0

键入以下命令能有Hadoop帮助输出的话表示Ok

bin/hadoop

编辑 etc/hadoop/core-site.xml:

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>

编辑 etc/hadoop/hdfs-site.xml:

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

还要配置本机可以无密码ssh登录

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

输入以下命令,如果免密码登录成功即Ok

ssh localhost
exit

cp etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml

编辑 etc/hadoop/mapred-site.xml:

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

编辑 etc/hadoop/yarn-site.xml:

<configuration>

<!-- Site specific YARN configuration properties -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>

</configuration>

格式化HDFS的文件系统

bin/hdfs namenode -format

启动 NameNode 和 DataNode 守护进程, 日志会写在$HADOOP_LOG_DIR 文件夹中(默认是 $HADOOP_HOME/logs)

sbin/start-dfs.sh

如果想以网页方式查看NameNode: http://localhost:50070/

创建 hdfs文件夹

bin/hdfs dfs -mkdir -p /user/rocky

启动 ResourceManager和NodeManager守护进程

sbin/start-yarn.sh

如果想以网页方式查看ResourceManager: http://localhost:8088/

创建文件夹

bin/hdfs dfs -mkdir input

将要处理的文件复制到HDFS文件夹中

bin/hdfs dfs -put etc/hadoop input

紧张的时候就要到了, 运行一个MapReduce 任务

bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar grep input output 'dfs[a-z.]+'

等待运行结束, 验证一下成功

bin/hdfs dfs -cat output/*
6   dfs.audit.logger
4   dfs.class
3   dfs.server.namenode.
2   dfs.period
2   dfs.audit.log.maxfilesize
2   dfs.audit.log.maxbackupindex
1   dfsmetrics.log
1   dfsadmin
1   dfs.servers
1   dfs.replication
1   dfs.file