第一次使用Hadoop的环境搭建

来源:互联网 发布:干燥箱 加热棒 淘宝 编辑:程序博客网 时间:2024/06/16 16:38

由于刚接触Hadoop,就像刚接触Java时候一样,要配置很多东西才能让Hadoop正常的在自己的机器上运行。(这里顺便吐槽一下Java,被骗了好多年说Java是支持多平台的一门语言,现在才知道其实是Java运行在不同平台的虚拟机jvm上而已。。。你们都是骗子)

好我们继续。

先来简单的说一下Hadoop吧,搜如何配置Hadoop的同学肯定也是第一次接触Hadoop,所以我们先澄清一个问题。Hadoop是什么?Hadoop不是一个数据库,Hadoop是一个平台,它给能在它上面运行的数据库(比如Hbase)和操作系统搭建了一个桥梁。Hadoop是一个统称,我们一般用到的具体软件,比如Apache Hadoop, 是Hadoop的一个distribution。 所以当面试官问你你用Hadoop的什么distribution的时候,请淡定,他是在问你你用谁家的Hadoop。谷歌一下我们可以发现,除了Apache Hadoop,还有Cloudera, MapR he Hortonworks。下面我们所说的Hadoop通指Apache Hadoop。

好,既然我们要配置,我们就要知道Hadoop里面究竟有什么,这样我们才知道要配置什么。Hadoop里面包括4个主要部分:Common,HDFS,YARN和MAPREDUCE。下面做个简单的介绍。

Hadoop Common是一个Hadoop的基础应用集合,它里面有一般的utilities和lib来支持其他的Hadoop module。他是Apache Hadoop Framework里是必须存在的。

HDFS,全称叫做Hadoop Distribution File System, 它是一个基于Java的file system,在Hadoop系统里,它用来在大量机器上的存储文件。简单一点的讲,HDFS就像我们C盘D盘之类的这些盘一样,用来存放自己支持的文件。

YARN是新一代的Mapreduce系统,也叫作MapReduce version2或者MRv2。与原mapreduce系统相比,YARN把JobTracker的两个主要功能:resource management和job life-cycle management拆分成一些独立的单元。

新的ResourceManager只用来控制全局的计算作业,与此同时,分布在每一个application上的ApplicationMaster控制当前application的schedule和coordination。

MapReduce就不用说了,从Mongodb开始就接触到,用来计算整理大量数据的一个方法。

=========================  扯蛋完毕,如果再不写如何配置Hadoop估计要挨骂了 ====================================================================

尽管网上可以找到一些配置Hadoop的方法,但由于截至本文为止,Hadoop2.7.x才刚刚发布,所以写一篇针对最新版本的Hadoop的配置文章以作留念。本文的流程是按照Hadoop官方的教程所编写的,所以大家下载了2.7.x版本后按照本文的配置是一定可以成功并运行的。

Hadoop是运行在Lunix上的,所以首先你需要一个Lunix系统,不管是虚拟机也好,重装系统也好。我用的是虚拟机,给的2G内存感觉运行还好,系统是Ubuntu。

一、首先第一步,下载Java和SSH并安装配置。为什么要安装JAVA呢,因为前面说过HDFS是基于java的文件系统,所以如果你的系统里没有java的话是不能运行HDFS的。Java的安装配置我就不多说了,能接触Hadoop的亲们要是不会配置Java那可以去卖地瓜了。下面来说SSH的下载和安装配置。

在Ubuntu的Terminal里输入 sudo apt-get install ssh。这行指令会帮你安装SSH在本机。安装好了之后输入 ssh localhost,当你使用ssh someURI的时候,意思是你企图通过ssh来链接目标地址,在这里这个目标地址是你的机器,因为我们是为了测试一下ssh是否已经正确的安装。如果出现让你输入密码,并且你输入密码后出现当前机器的操作系统等信息的话,恭喜你!安装ssh成功!

二、恭喜你迈出了艰难的第一步,下面要做的就是给ssh设置passwordless链接,为什么呢,因为hadoop是个分布式系统,意味着hadoop里的文件是可以存在不同物理机器上的,所以不同机器之间进行访问的时候要通过ssh,如果有密码那每次我们都需要手动输入密码,这个工作量是非常大的而且公司也不会花钱雇个人没事在那输密码。下面是如何配置passwordless:

  $ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa  $ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys  $ export HADOOP\_PREFIX=/usr/local/hadoop
这三条指令一下去保证你ssh localhost的时候不需要再输密码。要是不行那就是我叶良辰输了。

三、再次恭喜你!现在其实你就已经可以运行Hadoop了,不过只能是在non-distributed mode下运行。什么意思呢,就是说你已经可以用Hadoop做一个简单的运行,例如下面:

$ mkdir input  $ cp etc/hadoop/*.xml input  $ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar grep input output 'dfs[a-z.]+'  $ cat output/*
这是一个简单的MapReduce的例子,用Hadoop运行的。这种non-distributed mode就好比我们只有一个数据源,然后一个一个进行自己的操作,就像运行java一个单一的程序一样。这只是一个single java process,不过这种运行模式对debug是很有用的。

四、下面的配置过程就是搭建起distributed operation的环境,只需配置几个文件。

cd到路径etc/hadoop下,我们要配置的文件都在这个目录下。

1. 用nano打开core-site.xml,配置成如下样子

<configuration>    <property>        <name>fs.defaultFS</name>        <value>hdfs://localhost:9000</value>    </property></configuration>
然后ctrl+x保存关闭,再同样的方式打开hdfs-site.xml,按如下配置

<configuration>    <property>        <name>dfs.replication</name>        <value>1</value>    </property></configuration>
关闭,打开mapred-site.xml

<configuration>    <property>        <name>mapreduce.framework.name</name>        <value>yarn</value>    </property></configuration>
关闭,打开yarn-site.xml

<configuration>    <property>        <name>yarn.nodemanager.aux-services</name>        <value>mapreduce_shuffle</value>    </property></configuration>
好,到此为止,该配置的文件我们都配置好了!下面把咱的文件系统格式化一下,格式化成hdfs格式。

首先cd到bin目录下(请不要告诉我你找不到bin目录),在这个目录下运行hdfs namenode -format

如果出现一大串log最后提示格式化成功的字样,说明格式化成功!

================================== The End of configuration =============================================================================

上面就配置过程,如果哪里出现问题可以在评论给我留言。

配置完了第一件事情是做啥呢,当然是把daemon打开先。切换到sbin目录下,运行start-all.sh。如何查看所有该用的的daemon都已经开了呢,可以输入jps查看。如果namenode什么的都有,说明你的配置已经成功了。可以开始运行hadoop的指令了!

本文结束。

0 0
原创粉丝点击