Mac上配置Hadoop 2.6

来源:互联网 发布:设计美工的电脑配置 编辑:程序博客网 时间:2024/04/28 04:09

本文介绍如何在Mac上配置hadoop 2.6.1开发环境
本人使用MacBook Pro,系统是OS EI Capiton 10.11
其他的应该也基本通用

本文主要是参考Hadoop官网的Linux配置教程,外加自己在配置Mac上遇到的一些坑

软件准备

首先,要有Java开发环境,没有的先去配一下。可以通过以下命令来检查你是否具有Java开发环境

java -version

记得检查是否配置了$JAVA_HOME

检查你是否装有ssh和rsync,可以直接在终端输入ssh跟rsync来检查,如果出现其相关usage,则表明已安装

下载Hadoop 2.6.1:Apache Download Mirror

配置环境变量

解压Hadoop到任意位置,进入Hadoop的根目录(解压出来的那个文件夹)

用下面的命令找到你java的根目录的位置:

/usr/libexec/java_home

修改etc/hadoop/hadoop-env.sh来配置环境变量:
注释掉export JAVA_HOME=${JAVA_HOME}这一行
添加:

export JAVA_HOME={之前得到的java根目录}(不要大括号)export HADOOP_PREFIX={Hadoop的根目录}

之所以要替换export JAVA_HOME=${JAVA_HOME}这一行,是因为,在实际运行中,Hadoop似乎读取不到我们自己设置的环境变量JAVA_HOME,于是大家通常就直接在hadoop-env.sh指定JAVA_HOME了。

至于为什么Hadoop读取不到我们设置的JAVA_HOME,我也没有找到原因,可能跟权限神马的有关

现在运行bin\hadoop应该会给出一些usage提示了

为了方便,我们还可以在~/.bash_profile中添加

export PATH=$PATH:${HADOOP_PREFIX}/bin

注意这里要把${HADOOP_PREFIX}换成你Hadoop的根目录

这样我们就可以直接运行hadoop了

配置Hadoop

Hadoop是通过xml文件配置的

在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

由于Hadoop是一个分布式的框架,所以要确保节点之间可以无密码地SSH访问
首先,检查你是否能无密码地,通过SSH访问本机

ssh localhost

如果不能,则执行下面的命令:

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

其生成了rsa的公钥和私钥,我们把公钥添加到被访问机器的authorized_keys文件中,就可以实现无密码SSH访问了

另,如果提示:
ssh: connect to host localhost port 22: Connection refused
则你需要在“系统偏好设置->共享”里面,将“远程登录”这一项打上勾,从而允许SSH访问

单节点伪分布式环境

首先进入Hadoop根目录

cd {Hadoop根目录}

一、格式化namenode:

bin/hdfs namenode -format

如果出现如下错误:
错误: 找不到或无法加载主类
org.apache.hadoop.hdfs.server.namenode.NameNode
或:
Error: Could not find or load main class
org.apache.hadoop.hdfs.server.namenode.NameNode

则使用sudo的方式运行这条命令即可,无法加载主类是因为权限不够

二、启动Namenode Daemon和Datanode Daemon:

sbin/start-dfs.sh

相关日志文件可以在${HADOOP_HOME}\logs中找到

三、浏览器访问

现在你可以通过

http://localhost:50070/

来访问你的namenode了
在这里,可以浏览配置信息,查看HDFS文件系统等

四、测试&Demo

建立文件夹

bin/hdfs dfs -mkdir /userbin/hdfs dfs -mkdir /user/<username>

上传文件(或文件夹到HDFS)

bin/hdfs dfs -put etc/hadoop input

上述命令将etc/hadoop文件夹拷贝到了HDFS的input文件夹

跑样例程序:

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

查看输出:

bin/hdfs dfs -get output outputcat output/*

上面的代码先把HDFS上的output文件夹拷贝到本地output文件夹
然后用cat查看

也可以直接在HDFS上查看:

bin/hdfs dfs -cat output/*

如果你想停止DFS:

sbin/stop-dfs.sh

至此,单节点伪分布式的Hadoop环境就配置完成了

一个无法避免的Warning

在运行hdfs执行命令的时候,可能会出现如下warning:

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

官网的解释是native hadoop library只能在*nix下运行(linu系列的系统),无法再Cygwin和Mac OS X上运行,所以大家无视就好了,不影响正常运行的

0 0
原创粉丝点击