Hadoop从存储上来讲,是相似于冗余磁盘阵列(RAID)的存储方式,将数据分散存储并提供以提供吞吐量,它的存储系统就是HDFS(Hadoop Distuibute Fils System);从计算上来讲,它经过MapReduce模型,将大数据的计算分发到多台计算机上完成,再将结果合并,减小计算的时间。node
Hadoop适合于:apache
一、超大数据的计算;服务器
二、一次写入、屡次读取的模式;ssh
三、能够跑在普通的硬件上。分布式
Hadoop不适合:oop
一、低延迟的数据访问,它是为高数据吞吐量应用优化的;测试
二、大量的小文件大数据
Hadoop客户端须要和namenode进行交互,而namenode中存放的是datanode的文件属性,且都是在内存中,若是小文件过多,namenode是存放不了的;优化
三、多用户写入,任意修改文件。ui
Hadoop适合于一次计算,屡次读取的场景,如搜索引擎,只支持随机读取不支持随机写入,如Hadoop和Lucene的集成就不可以直接集成,由于Lucene支持随机写入。
本文将从使用的角度上谈了如何搭建Hadoop、如何配置Hadoop、如何验证Hadoop及在Hadoop上面执行计算,以及可能会遇到些什么样的问题。
由于Hadoop须要在Linux运行,而且Hadoop是基于Java的,在继续进行下面的步骤以前,请确认你已经准备好Linux操做系统以及Java 6或以上版本,而且已经正确的设置了JAVA_HOME。
搭建Hadpp的版本为1.2.1 下载地址为:http://apache.fayea.com/apache-mirror/hadoop/common/hadoop-1.2.1/
解压缩Hadoop到任意目录,我当前的Hadoop是将其解压到目录/usr/local/hadoop-1.2.1,并在/etc/profile中设置好环境变量HADOOP_HOME(这个变量不是必须的,在1.2.1已是Deprecated了,这里我之因此设置,仍是为了方便),以及将$HADOOP_HOME/bin目录加入到PATH中,这样咱们就能够在任意地方执行hadoop命令了,为了使用上的方便,再给”hadoop fs”设一个名为hdfs的alias方便使用,如下是我机器上/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 |
不然就只有退出从新登录才会生效。
Hadoop须要经过SSH和其它计算服务器进行沟通,因此首先要肯定本机或者是其它Hadoop计算服务器,是否都已经安装了ssh。
(1)、肯定系统是否安装了ssh和ssh-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_rsa和id_rsa.pub两个文件,将id_rsa.pub复制一份在~/.ssh/目录下,并重命名为authorized_keys,若是是单机搭建伪分布式,此时ssh的准备工做已经完成了,若是使用全分布式环境,那么须要将authorized_keys(或authorized_keys中的内容追加到须要无密码登录的服务器的~/.ssh/authorized_keys文件中)及id_rsa(或id_rsa中的内容追加到须要无密码登录的服务器的~/.ssh/id_rsa文件中)两个文件复制到各台分布式slave机器的“~/.ssh目录中”中,这样任意两台机器之间互相经过ssh访问,都不须要输入密码了,若是只是拷贝到authorized_keys到slave机器中,就只可以实现主到从的不输密码访问。
注:若是须要远程登录的服务器上尚未.ssh目录,那么就在登录用户的目录下新建.ssh目录,权限至少设置成744,若是.ssh目录下没有authorized_keys文件,也新建该文件,并将其权限设置为644。
(3)测试登录验证
在本例中,采用的是在单机中搭建伪分布式系统,经过以下ssh命令尝试登录:
ssh localhost 或 ssh 127.0.0.1 |
若是再也不提示输入密码,直接登录成功,那么SSH登录就设置成功了。