最近开始学习Hadoop,一直使用的是公司配好的环境。用了一段时间后发现对Hadoop还是一知半解,故决定动手在本机上安装一个供学习研究使用。正好自己用的是mac,所以没啥说的,直接安装。

总体流程  

1.安装jdk并配置好环境变量。因为Hadoop是使用java开发的,所以JDK是必须的。

2.实现ssh无密码验证配置 可以用ssh无需登陆连接到localhost。Hadoop并不要求一定要ssh无密码登录,主要是考虑到集群环境中机器数目多,一个一个输入密码浪费时间而且麻烦,不方便管理。

3.安装与配置Hadoop

4.格式化与启动

5.验证是否启动

环境

  由于mac 10.10系统中已去掉JDK,所以需要手动安装。官网下载:http://www.oracle.com/technetwork/java/javase/downloads/index.html。我下在的是JDK最新版,安装过程就不多说了,双击运行jdk-8u25-macosx-x64.dmg就可以。安装完后,在终端中输入java -version,显示版本即安装成功。下面是配置环境变量。在终端中输入/usr/libexec/java_home会出现JDK所在的真实路径。Mac 10.5后,Apple建议设置JAVA_HOME使用/usr/libexec/java_home。然后export$JAVA_HOME in file ~/. bash_profile or ~/.profile。由于我用的是zsh,所以vi打开~/.zshrc,输入图片所示。保存并退出。在终端中执行source .zshrc。环境变量即生效。

SSH无密码验证配置

  Hadoop 需要使用SSH 协议,namenode 使用SSH 协议启动 namenode 和datanode 进程,伪分布式模式数据节点和名称节点均是本身,为了操作方便,需要配置 SSH localhost无密码验证。由于mac自带了ssh,所以直接进行设置。

1. 执行命令:ssh localhost

  会有错误提示信息,表示当前用户没有权限。这是系统为安全考虑,默认设置的。更改设置如下:进入system preference --> sharing --> 勾选remote login,并设置allow access for all users。再次输入“ssh localhost",再输入密码并确认之后,可以看到ssh成功。中文版如下图:系统偏好设置->共享->远程登录

不过这里面还有一个麻烦,就是每次都会要求输入用户密码,那么就实现免登陆的配置

2.执行命令:ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

3.执行命令:cat .ssh/id_rsa.pub >>.ssh/authorized_keys

4.再执行命令:ssh localhost

出现次登录信息则表示免登陆配置成功。

配置

下面开始正式搭建。

Hadoop三种运行模式:

1. 单机模式(standalone):单机模式是Hadoop的默认模式。当配置文件为空时,Hadoop完全运行在本地。因为不需要与其他节点交互,单机模式就不使用HDFS,也不加载任何Hadoop的守护进程。该模式主要用于开发调试MapReduce程序的应用逻辑。

2. 伪分布模式(Pseudo-Distributed Mode):Hadoop守护进程运行在本地机器上,模拟一个小规模的的集群。该模式在单机模式之上增加了代码调试功能,允许你检查内存使用情况,HDFS输入输出,以及其他的守护进程交互。

3. 全分布模式(Fully Distributed Mode):Hadoop守护进程运行在一个集群上。

Hadoop并没有特别区分伪分布式和集群环境,伪分布式可以理解为只有一个节点的集群环境,方便学习和使用。

安装Hadoop2.5.1

官网下载地址:http://mirrors.hust.edu.cn/apache/hadoop/common/

下载到本机后解压到你工作空间中即可。

配置Hadoop环境变量

   打开终端,输入vi .zshrc。输入图片所示,保存退出后。执行source .zshrc。

  在使用Hadoop之前,还需要对一些配置文件进行修改,Hadoop 2.5.1的配置文件都保存在$HADOOP_HOME/etc/hadoop文件夹下。以下直接列出几个配置文件的修改方法。

hadoop-env.sh,主要是设置JAVA_HOME,由于我们之前已设置过JAVA_HOME,所以在这里可以不用修改。

至此,hadoop的单机环境就算安装完了。

伪分布式环境搭建

  这里需要设定4个文件:core-site.xml,hdfs-site.xml,mapred-site.xml和yarn-site.xml.都在/opt/hadoop-2.5.1/etc/hadoop/目录下
core-site.xml:Hadoop Core的配置项,例如HDFS和MapReduce常用的I/O设置等。
hdfs-site.xml:Hadoop 守护进程的配置项,包括namenode,辅助namenode和datanode等。
mapred-site.xml:MapReduce 守护进程的配置项,包括jobtracker和tasktracker。

yarn-site.xml: Yarn 框架用于执行MapReduce 处理程序

core-site.xml

hdfs-site.xml

mapred-site.xml

  请注意这里安装的2.5.1版本,2.*版本较1.*版本改动很大,主要是用Hadoop MapReduceV2(Yarn) 框架代替了一代的架构,其中JobTracker 和 TaskTracker 不见了,取而代之的是 ResourceManager, ApplicationMaster 与 NodeManager 三个部分,而具体的配置文件位置与内容也都有了相应变化。所以我们在mapred-site.xml中设置了处理map-reduce的框架Yarn,接下来就需要在yarn-site.xml中配置ResourceManager, ApplicationMaster 与 NodeManager。

yar-site.xml

格式化HDFS

通过以上步骤,我们已经设定好Hadoop伪分布式环境,接着就是启动Hadoop的相关服务,格式化namenode,secondarynamenode,tasktracker:

hadoop namenode -format  

如上图所示,代表格式化成功。

启动Hadoop

接着执行start-all.sh来启动所有服务,包括namenode,datanode,start-all.sh脚本用来装载守护进程。

./start-all.sh   #2.5.1版推荐使用start-dfs.sh和start-yarn.sh来启动

用Java的jps命令列出所有守护进程来验证安装成功

检查运行状态
此时,Hadoop已经启动,用浏览器打开localhost:50070localhost:8088,可以分别看到HDFS和YARN的管理页面。
http://localhost:50070          #HDFS管理页面

http://localhost:8088            #YARN管理页面

停止Hadoop服务

stop-all.sh

待解决问题:

查阅有关官方介绍 http://wiki.apache.org/hadoop/HowToContribute 中有说明:Hadoop本地库只支持*nix平台,已经广泛使用在GNU/Linux平台上,但是不支持 Cygwin  和 Mac OS X 。需要本地编译,由于时间原因一直没弄好,稍后更新!

OS X Yosemite下安装Hadoop2.5.1伪分布式环境的更多相关文章

  1. 在Win7虚拟机下搭建Hadoop2.6.0伪分布式环境

    近几年大数据越来越火热.由于工作需要以及个人兴趣,最近开始学习大数据相关技术.学习过程中的一些经验教训希望能通过博文沉淀下来,与网友分享讨论,作为个人备忘. 第一篇,在win7虚拟机下搭建hadoop ...

  2. (转)ubuntu 14.04下安装hadoop2.6(伪分布式)

    安装: http://pingax.com/install-hadoop2-6-0-on-ubuntu/   写的非常好(国外人比较实在,他说的单机实际上是伪分布式...). 另外要注意的是,如果对新 ...

  3. 安装hadoop2.6.0伪分布式环境

    集群环境搭建请见:http://blog.csdn.net/jediael_lu/article/details/45145767 一.环境准备 1.安装linux.jdk 2.下载hadoop2.6 ...

  4. 安装hadoop2.6.0伪分布式环境 分类: A1_HADOOP 2015-04-27 18:59 409人阅读 评论(0) 收藏

    集群环境搭建请见:http://blog.csdn.net/jediael_lu/article/details/45145767 一.环境准备 1.安装linux.jdk 2.下载hadoop2.6 ...

  5. Hadoop2.5.0伪分布式环境搭建

    本章主要介绍下在Linux系统下的Hadoop2.5.0伪分布式环境搭建步骤.首先要搭建Hadoop伪分布式环境,需要完成一些前置依赖工作,包括创建用户.安装JDK.关闭防火墙等. 一.创建hadoo ...

  6. Ubuntu15.10下Hadoop2.6.0伪分布式环境安装配置及Hadoop Streaming的体验

    Ubuntu用的是Ubuntu15.10Beta2版本,正式的版本好像要到这个月的22号才发布.参考的资料主要是http://www.powerxing.com/install-hadoop-clus ...

  7. Ubuntu16.04 下 hadoop的安装与配置(伪分布式环境)

    一.准备 1.1创建hadoop用户 $ sudo useradd -m hadoop -s /bin/bash #创建hadoop用户,并使用/bin/bash作为shell $ sudo pass ...

  8. CentOS5.4 搭建Hadoop2.5.2伪分布式环境

    简介: Hadoop是处理大数据的主要工具,其核心部分是HDFS.MapReduce.为了学习的方便,我在虚拟机上搭建了一个伪分布式环境,来进行开发学习. 一.安装前准备: 1)linux服务器:Vm ...

  9. ubuntu14.04搭建Hadoop2.9.0伪分布式环境

    本文主要参考 给力星的博文——Hadoop安装教程_单机/伪分布式配置_Hadoop2.6.0/Ubuntu14.04 一些准备工作的基本步骤和步骤具体说明本文不再列出,文章中提到的“见参考”均指以上 ...

随机推荐

  1. Web Services的相关名词解释:WSDL与SOAP

    在对Web Services进行性能测试时,接触到最多的两个名词就是WSDL和SOAP.利用LoadRunner对Web Services进行调用的时候,也存在两种常用方法,即基于WSDL的[Add ...

  2. smtp服务器搭建(实现本地通讯)

    1安装postfix 1)下载安装包    sudo apt-get install postfix 2)配置服务器 选择确定. 选择IneternetSite(通过SMTP发送和接收邮件),然后确定 ...

  3. poj 1704 Georgia and Bob(阶梯博弈)

    Georgia and Bob Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 8656   Accepted: 2751 D ...

  4. qut训练题解-2016-9-4个人赛

    题目链接:http://acm.hust.edu.cn/vjudge/contest/131124#overview 贴了链接这里就不上原题的描述了. A: B: 分析:这里用到简单的拓扑排序的算法. ...

  5. A*寻路算法的探寻与改良(一)

    A*寻路算法的探寻与改良(一) by:田宇轩                                                                    第一部分:这里我们主 ...

  6. thinkphp 区分大小写的文件存在判断

    /** * 区分大小写的文件存在判断 * @param string $filename 文件地址 * @return boolean */ function file_exists_case($fi ...

  7. 【设计模式 - 13】之责任链模式(Chain Of Responsibility)

    1      模式简介 责任链模式的简介: 1.        责任链模式为请求创建了一个接收者对象的链,每个接收者都包含对另一个接收者的引用,如果一个对象不能处理该请求,那么它会把相同的请求传给下一 ...

  8. ASP.NET中的文件上传大小限制的问题

    一.文件大小限制的问题 首先我们来说一下如何解决ASP.NET中的文件上传大小限制的问题,我们知道在默认情况下ASP.NET的文件上传大小限制为2M,一般情况下,我们可以采用更改WEB.Config文 ...

  9. hdoj 3157 Crazy Circuits 【有下界最小流】

    题目:hdoj 3157 Crazy Circuits 题意:如今要制造一个电路板.电路板上有 n 个电子元件,各个元件之间有单向的电流流向.然后有一个 + .电流进入, -- 电流汇入,然后推断能不 ...

  10. TREEVIEW节点拖拽

    http://files.cnblogs.com/xe2011/TreeView_Drag_and_Drop.rar       假设把A节点往B节点上拖拽 那么  A 为Node1,B为Node2 ...