首页 > 代码库 > Hadoop入门进阶步步高(一)-环境准备

Hadoop入门进阶步步高(一)-环境准备

前言

Hadoop从存储上来说,是类似于冗余磁盘阵列(RAID)的存储方式,将数据分散存储并提供以提供吞吐量,它的存储系统就是HDFSHadoop Distuibute Fils System);从计算上来说,它通过MapReduce模型,将大数据的计算分发到多台计算机上完成,再将结果合并,减少计算的时间。

Hadoop适合于:

1、超大数据的计算;

2、一次写入、多次读取的模式;

3、可以跑在普通的硬件上。

 

Hadoop不适合:

1、低延迟的数据访问,它是为高数据吞吐量应用优化的;

2、大量的小文件

Hadoop客户端需要和namenode进行交互,而namenode中存放的是datanode的文件属性,且都是在内存中,如果小文件过多,namenode是存放不了的;

3、多用户写入,任意修改文件。

Hadoop适合于一次计算,多次读取的场景,如搜索引擎,只支持随机读取不支持随机写入,如HadoopLucene的集成就不能够直接集成,因为Lucene支持随机写入。

 

本文将从使用的角度上谈了如何搭建Hadoop、如何配置Hadoop、如何验证Hadoop及在Hadoop上面执行计算,以及可能会遇到些什么样的问题。

一、Hadoop环境搭建

因为Hadoop需要在Linux运行,并且Hadoop是基于Java的,在继续进行下面的步骤之前,请确认你已经准备好Linux操作系统以及Java 6或以上版本,并且已经正确的设置了JAVA_HOME

 

1、下载Hadoop

搭建Hadpp的版本为1.2.1 下载地址为:http://apache.fayea.com/apache-mirror/hadoop/common/hadoop-1.2.1/

 

2、安装Hadoop

解压缩Hadoop到任意目录,我当前的Hadoop是将其解压到目录/usr/local/hadoop-1.2.1,并在/etc/profile中设置好环境变量HADOOP_HOME(这个变量不是必须的,在1.2.1已经是Deprecated了,这里我之所以设置,还是为了方便),以及将$HADOOP_HOME/bin目录加入到PATH中,这样我们就可以在任意地方执行hadoop命令了,为了使用上的方便,再给”hadoop fs”设一个名为hdfsalias方便使用,以下是我机器上/etc/profile增加的内容:

export JAVA_HOME=/usr/local/jdk1.6.0_33

export HADOOP_HOME=/usr/local/hadoop-1.2.1

export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar

PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin

#Alias for hadoop

alias hdfs=‘hadoop fs‘

注:该文件的编辑需要root权限,修改完成后,如果想立即生效,需要通过source命令操作一下:

source /etc/profile

否则就只有退出重新登陆才会生效。

 

3、准备ssh

Hadoop需要通过SSH和其它计算服务器进行沟通,所以首先要确定本机或者是其它Hadoop计算服务器,是否都已经安装了ssh

1)、确定系统是否安装了sshssh-keygey

可以通过which命令来确认

which ssh

which ssh-keygen

如果出现

/usr/bin/which: no ssh in (/usr/.....)则表示系统里面没有安装SSH服务,可以通过www.openssh.com下载安装

(2)、发布公钥证书

执行如下命令:

ssh-keygen -t rsa -P ‘‘ -f ~/.ssh/id_rsa

~/.ssh/ 目录会生成id_rsaid_rsa.pub两个文件,将id_rsa.pub复制一份在~/.ssh/目录下,并重命名为authorized_keys,如果是单机搭建伪分布式,此时ssh的准备工作已经完成了,如果使用全分布式环境,那么需要将authorized_keysid_rsa两个文件复制到各台分布式slave机器的“~/.ssh目录中”中,这样任意两台机器之间互相通过ssh访问,都不需要输入密码了,如果只是拷贝到authorized_keysslave机器中,就只能够实现主到从的不输密码访问。

(3)测试登陆验证

在本例中,采用的是在单机中搭建伪分布式系统,通过如下ssh命令尝试登陆:

ssh localhost

ssh 127.0.0.1

如果不再提示输入密码,直接登陆成功,那么SSH登陆就设置成功了。