Hadoop的安装部署

更新时间:2023-08-07 18:53:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Hadoop的安装部署

对于云计算的概念,世界知名的几大IT厂商都推出了各自的云计算平台,比如Amazon的AWS、微软的Azure和IBM的蓝云等,但他们都是商业平台,不适合广大对云计算有兴趣的研究者,而Hadoop是google云计算的开源实现,并且是完全免费的。Hadoop是一个分布式系统基础架构,是Apache下的一个项目,由HDFS、MapReduce、HBase、Hive和ZooKeeper等成员组成。其中,HDFS和MapReduce是两个最基础最重要的成员。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高速运算和存储。简单地说来,Hadoop是一个可以更容易开发和运行处理大规模数据的软件平台。Hadoop框架中最核心的设计就是:MapReduce和HDFS。MapReduce的思想是由Google的一篇论文所提及而被广为流传的,简单的一句话解释MapReduce就是“任务的分解与结果的汇总”。HDFS是Hadoop分布式文件系统(HadoopDistributedFileSystem)的缩写,为分布式计算存储提供了底层支持。

MapReduce从它名字上来看就大致可以看出个缘由,两个动词Map和Reduce,“Map(展开)”就是将一个任务分解成为多个任务,“Reduce”就是将分解后多任务处理的结果汇总起来,得出最后的分析结果。这不是什么新思想,其实在前面提到的多线程,多任务的设计就可以找到这种思想的影子。不论是现实社会,还是在程序设计中,一项工作往往可以被拆分成为多个任务,任务之间的关系可以分为两种:一种是不相关的任务,可以并行执行;另一种是任务之间有相互的依赖,先后顺序不能够颠倒,这类任务是无法并行处理的。回到大学时期,教授上课时让大家去分析关键路径,无非就是找最省时的任务分解执行方式。在分布式系统中,机器集群就可以看作硬件资源池,将并行的任务拆分,然后交由每一个空闲机器资源去处理,能够极大地提高计算效率,同时这种资源无关性,对于计算集群的扩展无疑提供了最好的设计保证。(其实我一直认为Hadoop的卡通图标不应该是一个小象,应该是蚂蚁,分布式计算就好比蚂蚁吃大象,廉价的机器群可以匹敌任何高性能的计算机,纵向扩展的曲线始终敌不过横向扩展的斜线)。任务分解处理以后,那就需要将处理以后的结果再汇总起来,这就是Reduce

要做的工作。如下图:

HDFS是分布式计算的存储基石,Hadoop的分布式文件系统和其他分布式文件系统有很多类似的特质。分布式文件系统基本的几个特点:

1.对于整个集群有单一的命名空间。

2.数据一致性。适合一次写入多次读取的模型,客户端在文件没有被成功创建之前无法看到文件存在。

3.文件会被分割成多个文件块,每个文件块被分配存储到数据节点上,而且根据配置会由复制文件块来保证数据的安全性。

就HDFS的设计而言,有以下一些特点:

1.Block的放置:默认不配置。一个Block会有三份备份,一份放在NameNode指定的DataNode,另一份放在与指定DataNode非同一Rack上的DataNode,最后一份放在与指定DataNode同一Rack上的DataNode上。备份无非就是为了数据安全,考虑同一Rack的失败情况以及不同Rack之间数据拷贝性能问题就采用这种配置方式。

2.心跳检测DataNode的健康状况,如果发现问题就采取数据备份的方式来保证数据的安全性。

3.数据复制(场景为DataNode失败、需要平衡DataNode的存储利用率和需要平衡DataNode数据交互压力等情况):这里先说一下,使用HDFS的balancer命令,可以配置一个Threshold来平衡每一个DataNode磁盘利用率。例如设置了Threshold为10%,那么执行balancer命令的时候,首先统计所有DataNode的磁盘利用率的均值,然后判断如果某一个DataNode的磁盘利用率超过这个均值Threshold以上,那么将会把这个DataNode的block转移到磁盘利用率低的DataNode,这对于新节点的加入来说十分有用。

4.数据交验:采用CRC32作数据交验。在文件Block写入的时候除了写入数据还会写入交验信息,在读取的时候需要交验后再读入。

http://www.77cn.com.cnNode是单点:如果失败的话,任务处理信息将会纪录在本地文件系统和远端的文件系统中。

6.数据管道性的写入:当客户端要写入文件到DataNode上,首先客户端读取一个Block然后写到第一个DataNode上,然后由第一个DataNode传递到备份的DataNode上,一直到所有需要写入这个Block的NataNode都成功写入,客户端才会继续开始写下一个Block。

7.安全模式:在分布式文件系统启动的时候,开始的时候会有安全模式,当分布式文件系统处于安全模式的情况下,文件系统中的内容不允许修改也不允许删除,直到安全模式结束。安全模式主要是为了系统启动的时候检查各个DataNode上数据块的有效性,同时根据策略必要的复制或者删除部分数据块。运行期通过命令也可以进入安全模式。在实践过程中,系统启动的时候去修改和删除文件也会有安全模式不允许修改的出错提示,只需要等待一会儿即可。

部署:

前期准备:

1、安装linux虚拟机使用的是VMware7.0.1build-227600和ubuntu11.10,并且安装vmwaretools和samba服务,这样方便物理机与虚拟机的使用。

1)vmwaretools安装命令如下:

#mkdir/mnt/cdrom/

#mount/dev/cdrom//mnt/cdrom/

#cp/mnt/cdrom/VMwareTools-*.tar.gz

#cd/tmp/

#tar-zxpfVMwareTools-*.tar.gz

#cdvmware-tools-distrib/

#./vmware-install.pl

2)samba服务的安装配置如下:/tmp/

#apt-getinstallsamba

#apt-getinstallsmbclient

#mkdir/samba/

#vi/etc/smb.conf

做如下修改:

security=user改为security=share

文件末尾添加如下内容:

[samba]

Comment=thisislinuxsharedirectory

Path=/samba

Public=yes

Writable=yes

在windows中点击运行,输入\\虚拟机linux的ip\samba就能访问到共享文件夹。

2、hadoop运行时需要管理远端的hadoop守护进程,所以需要安装sshserver,使用如下命令:

#apt-getinstallssh

3、安装java,使用jdk-6u24-linux-i586.bin版本。安装java到/usr/java/目录下:#mkdir/usr/java/

#cd/usr/java/

#/samba/jdk-6u24-linux-i586.bin

4、解压hadoop安装包,实验使用hadoop-1.0.2.tar.gz,软件放在samba文件夹中,解压到/usr/目录中。

#cd/usr/

#tar-zxvf/samba/hadoop-1.0.2.tar.gz

5、编辑解压出来的hadoop文件夹中的/conf/hadoop-env.sh文件,把JAVA_HOME设置为java的安装路径如exportJAVA_HOME=/usr/java/jdk1.6.0_24

#cd/usr/hadoop-1.0.2/

#viconf/hadoop-env.sh

安装环境配置完成后,就可以对hadoop进行测试。Hadoop集群有三种运行模式:单机模式、伪分布式模式和完全分布式模式。

1、默认情况下为单机模式,方便调试工作:

#mkdirinput

#cdinput

#echo“helloworld”>test1.txt

#echo“hellohadoop”>test2.txt

#bin/hadoopjarhadoop-examples-1.0.2.jarwordcountinputoutput

查看执行结果:

#cat

output/*

可以看到与原先输入txt文件的内容词数相符合。

当再次用其他的实例进行测试时:

#cpconf/*xmlinput/

#bin/hadoopjarhadoop-examples-1.0.2.jargrep

提示output

文件夹已经存在的错误,如图:input/output/'dfs[a-z.]+'

所以进行以上操作之前需要先删除原先的输出文件夹output:

#rm-rfoutput/

#bin/hadoopjarhadoop-examples-1.0.2.jargrepinput/output/'dfs[a-z.]+'

#catoutput/*

查看结果为:

2、伪分布式模式:

对hadoop1.0.2/conf/目录中的core-site.xml,hdfs-site.xml,mapred-site.xml进行相应的配置:

core-site.xml

hdfs-site.xml

mapred-site.xml

配置完hadoop的配置文件后,进行免密码SSH设置:#ssh-keygen-t

rsa

进入/home/roy/.ssh/目录,执行如下命令:

#cpid_rsa.pubauthorized_keys

#ssh

localhost

运行hadoop之前,需要格式化分布式文件系统:

#sudobin/hadoopnamenode–format

启动hadoop守护进程:

#bin

/start-all.sh

http://localhost:50070

http://localhost:50030

http://localhost:50060

把输入文件复制到分布式文件系统中:

#bin/hadoopfs–putconfinput

运行一个提供的实例:

#sudobin/hadoopjarhadoop-examples-1.0.2.jargrepinput/output/‘dfs[a-z.]+’

把输出文件从分布式文件系统中复制到本地文件系统中并查看:#bin/hadoopfs-getoutputoutput

#cat

output/*

或者直接查看分布式系统中的输出文件:

#bin/hadoopfs-catoutput/*

都完成以后就可以关闭守护进程:

#bin/stop-all.sh

运行WordCount实例:

本文来源:https://www.bwwdw.com/article/8kzj.html

Top