Hadoop海量级分布式存储_第1页
Hadoop海量级分布式存储_第2页
Hadoop海量级分布式存储_第3页
Hadoop海量级分布式存储_第4页
Hadoop海量级分布式存储_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一、Hadoop简介;二、Hadoop构成:HDFS+MapReduce;三、案例:部署Hadoop分布式存储集群;一、Hadoop简介:1.大数据略知一二:1)大数据(bigdata),指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产,需要在合理的时间内达到提取、管理、处理、并且整理成为帮助企业运营决策更积极目的的信息;2)在维克托·迈尔-舍恩伯格及肯尼斯·库克耶编写的《大数据时代》

中大数据指不用随机分析法(抽样调查)这样捷径,而采用所有数据进行分析处理;3)大数据的5V特点(IBM提出):Volume(大量)、Velocity(高速)、Variety(多样)、Value(低价值密度)、Veracity(真实性)。2.图解大数据:/blog/2017/07/iaas-paas-saas.html3.项目起源:

Hadoop由

ApacheSoftwareFoundation

公司于

2005

年秋天作为Lucene的子项目Nutch的一部分正式引入。它受到最先由

GoogleLab

开发的

Map/Reduce

GoogleFileSystem(GFS)

的启发。2006

3

月份,Map/Reduce

NutchDistributedFileSystem(NDFS)

分别被纳入称为

Hadoop

的项目中。Hadoop是一个能够对大量数据进行分布式处理的软件框架。

Hadoop

是最受欢迎的在

Internet

上对搜索关键字进行内容分类的工具,但它也可以解决许多要求极大伸缩性的问题。例如,如果您要

grep

一个

10TB

的巨型文件,会出现什么情况?在传统的系统上,这将需要很长的时间。但是

Hadoop

在设计时就考虑到这些问题,采用并行执行机制,因此能大大提高效率。4.hadoop优点:1)高可靠:在多台廉价商用机器群集上,善于存放超大文件;2)高扩展性:Hadoop是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以千计的节点中。3)高效性:处理速度较快。4)高容错性:Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配。5)低成本:hadoop是开源的,项目的软件成本因此会大大降低。6)Hadoop带有用Java语言编写的框架,因此运行在

Linux

生产平台上是非常理想的。Hadoop

上的应用程序也可以使用其他语言编写,比如

C++。补充:云计算大数据必会单位(换算为1024=2^10;1B=8b,1汉字=2B)bit比特|位--byte字节--KB--MB--GB--TB--PB--EB--ZB--YB--BB--NB--DB5.hadoop缺点:1)低时间延迟的数据访问:要求在例如几十毫秒内完成数据访问的应用,不适合在HDFS上运行,HDFS虽然有强大的高数据吞吐量,但是以提高时间延迟为代价,可以使用HBase满足低延迟的访问需求;2)无法高效存储大量小文件:大量小文件会造成整个文件系统的目录树和索引目录相对较大,而这些的元数据都会存放在namenode节点;二、Hadoop构成:HDFS+MapReduce:1.HDFS引擎结构:1)HadoopDistributedFileSystem(HDFS)引擎:包括namenode(名称空间节点)和datanode(数据节点);/liango/p/7136448.html基础概念:1)文件块:Block,datanode中存放数据最小逻辑单元,默认块大小为64M,便于管理,不受磁盘限制,数据可在datanode的总block中进行冗余备份,存储的副本数量要少于datanode节点的数量,当一个或多个块出现故障,用户可以直接去其他地方读取数据副本;2)NameNode:管理文件系统的命名空间,属于管理者角色,维护文件系统树内所有文件和目录,记录每个文件在各个DataNode上的位置和副本信息,并协调客户端对文件的访问;3)DataNode:负责处理文件系统客户端的文件读写请求,存储并检索数据块,并定期向NameNode发送所存储的块的列表,属于工作者角色。负责所在物理节点的存储管理,按照一次写入,多次读取的原则,存储文件按照Block块进行存储;4)SecondaryNameNode:相当于NameNode的快照,也称之为二级NameNode,能够周期性的备份NameNode,记录NameNode上的元数据等。为防止NameNode进程出现故障,起到备份作用;2.MapReduce

引擎构成:1)MapReduce

引擎:是用于并行处理计算大数据集的软件框架,是HDFS(对于本文)的上一层,与hadoop结合工作,将用户的任务分发到上千台商用机器组成的集群上。最简单的

MapReduce应用程序至少包含

2个部分:一个

Map(映射)函数、一个

Reduce(归纳)函数,Map负责将任务分解成多个子任务,reduce负责把分解后的多任务的处理结果进行汇总;JobTrackers

:是一个master进程,用于作业的调度和管理工作,一个Hadoop集群中只有一台JobTracker;TaskTrackers:运行在多个节点上的Slave服务,用于执行任务。TaskTracker需要运行在HDFS的DataNode节点上;MapReduce

引擎的缺点:JobTracker单点瓶颈(负责集群心跳信息、作业管理)、JobTracker分配作业延迟高、缺乏灵活性;2)YARN架构:是MapReduce

引擎的V2版本,解决MapReduce

引擎面临的性能瓶颈问题,将集群资源管理和作业调度进行分离;ResourceManager进程:管理集群资源的资源管理器MapReduce:管理作业任务3)数据仓库工具Hive和分布式数据库Hbase:NoSQL数据库3.Hadoop核心概念注意事项:1)HDFS把节点分成两类:NameNode和DataNode。NameNode是唯一的,程序与之通信,然后从DataNode上存取文件。这些操作是透明的,与普通的文件系统API没有区别。2)MapReduce则是JobTracker节点为主,分配工作以及负责和用户程序通信。3)HDFS和MapReduce实现是完全分离的,并不是没有HDFS就不能MapReduce运算。4)Hadoop也跟其他云计算项目有共同点和目标:实现海量数据的计算。而进行海量计算需要一个稳定的,安全的数据容器,才有了Hadoop分布式文件系统(HDFS,HadoopDistributedFileSystem)。5)60款大数据软件:/SunWuKong_Hadoop/article/details/535804256)Hadoop生态:/u010270403/article/details/51493191三、案例:部署Hadoop分布式存储集群:环境:系统IP地址主机名所需软件Centos7.464bit170801masternamenodehadoop-2.7.6.tar.gz

jdk-8u171-linux-x64.tar.gzCentos7.464bit170802slave1datanodehadoop-2.7.6.tar.gz

jdk-8u171-linux-x64.tar.gzCentos7.464bit170803slave2datanodehadoop-2.7.6.tar.gz

jdk-8u171-linux-x64.tar.gz版本要求:hadoop版本>=2.7:要求Java7(openjdk/oracle)hadoop版本<=2.6:要求Java6(openjdk/oracle)步骤:Ø配置所有节点间的域名解析及创建用户(所有节点配置相同,在此列举master节点配置);Ø配置master节点远程管理slave节点;Ø在所有节点安装JDK环境(所有节点配置相同,在此列举master节点配置);Ø在所有节点安装Hadoop并简要配置(所有节点配置相同,在此列举master节点配置);Ø在master节点进行配置hadoop服务,并将配置文件复制到slave节点上;Ø在master节点初始化并且启动Hadoop进程;Ø验证slave节点的进程状态;Ø网页查看http://master:50070统计hadoop集群的信息;ØHadoop中数据的基本管理;Ø配置所有节点间的域名解析及创建用户(所有节点配置相同,在此列举master节点配置):[root@master~]#

hostnamectlset-hostname

master[root@master~]#

cat<>/etc/hosts01master02slave103slave2END[root@master~]#

useraddhadoop[root@master~]#

echo"hadoop"|passwd--stdinhadoopØ配置master节点远程管理slave节点:[root@master~]#su-hadoop上一次登录:四5月3101:54:26CST2018pts/0上[hadoop@master~]$ssh-keygen-trsa[hadoop@master~]$ssh-copy-idhadoop@01[hadoop@master~]$ssh-copy-idhadoop@02[hadoop@master~]$ssh-copy-idhadoop@03[hadoop@master~]$

sshhadoop@master

##远程连接slave节点,进行确认key值文件,不然在启动hadoo时,会出现key的问题导致无法启动[hadoop@master~]$

sshhadoop@slave1[hadoop@master~]$

sshhadoop@slave2Ø在所有节点安装JDK环境(所有节点配置相同,在此列举master节点配置):[hadoop@master~]$

exit[root@master~]#tarzxvfjdk-8u171-linux-x64.tar.gz[root@master~]#mv/root/jdk1.8.0_171//usr/local/java/[root@master~]#ls/usr/local/java/[root@master~]#

cat<>/etc/profileJAVA_HOME=/usr/local/java/JRE_HOME=\$JAVA_HOME/jreCLASS_PATH=.:\$JAVA_HOME/lib/dt.jar:\$JAVA_HOME/lib/tools.jar:\$JAVA_HOME/libPATH=\$PATH:\$JAVA_HOME/bin:\$JRE_HOME/binexportJAVA_HOMEJRE_HOMECLASS_PATHPATHEND[root@master~]#source/etc/profile[root@master~]#java-versionjavaversion"1.8.0_171"Ø在所有节点安装Hadoop并简要配置(所有节点配置相同,在此列举master节点配置):[root@master~]#tarzxvfhadoop-2.7.6.tar.gz[root@master~]#mv/root/hadoop-2.7.6//usr/local/hadoop/[root@master~]#ls/usr/local/hadoop/bin

etc

include

lib

libexec

LICENSE.txt

NOTICE.txt

README.txt

sbin

share[root@master~]#

cat<>/etc/profileexportHADOOP_HOME=/usr/local/hadoop/exportPATH=\$PATH:\$HADOOP_HOME/binEND[root@master~]#source/etc/profile[root@master~]#

echo"exportJAVA_HOME=/usr/local/java/">>/usr/local/hadoop/etc/hadoop/hadoop-env.sh##设置HDFS存储加载jdk的环境变量[root@master~]#

echo"exportJAVA_HOME=/usr/local/java/">>/usr/local/hadoop/etc/hadoop/yarn-env.sh##设置mapreduce的V2版本--YARN加载jdk的环境变量[root@master~]#mkdir/usr/local/hadoop/name/

##存放namenode中元数据的位置[root@master~]#mkdir/usr/local/hadoop/data/

##存放datanode中的数据目录[root@master~]#mkdir/usr/local/hadoop/tmp/

##存放用户临时文件[root@master~]#mkdir/usr/local/hadoop/var/

##存放服务动态变化文件[root@master~]#chownhadoop/usr/local/hadoop/-RØ在master节点进行配置hadoop服务,并将配置文件复制到slave节点上;[root@master~]#

su-hadoop[hadoop@master~]$vi/usr/local/hadoop/etc/hadoop/core-site.xml

##指定名称节点namenode的相关配置

hadoop.tmp.dir

/usr/local/hadoop/tmp

Abase

forothertemporarydirectories.

hdfs://master:9000[hadoop@master~]$vi/usr/local/hadoop/etc/hadoop/hdfs-site.xml

##指定hdfs存储的相关配置

node.secondary.http-address

master:50090

.dir

/usr/local/hadoop/name

Path

onthelocalfilesystemwheretheNameNodestoresthenamespaceandtransactionslogspersistently.

dfs.data.dir

/usr/local/hadoop/data

Comma

separatedlistofpathsonthelocalfilesystemofaDataNodewhereitshouldstoreitsblocks.

dfs.replication

2

dfs.webhdfs.enabled

true[hadoop@master~]$cp/usr/local/hadoop/etc/hadoop/mapred-site.xml.template/usr/local/hadoop/etc/hadoop/mapred-site.xml

##修改mapreduce配置文件,将其改为YARN模型[hadoop@master~]$vi/usr/local/hadoop/etc/hadoop/mapred-site.xml

##指定MapR的相关配置

mapred.job.tracker

master:49001

mapred.local.dir

/usr/local/hadoop/var

yarn[hadoop@master~]$vi/usr/local/hadoop/etc/hadoop/slaves

##指定slave的名称slave1slave2附:此文件明确指定DataNode节点,可以通过节点的添加和减少来满足整个hadoop群集的伸缩性,添加节点时,首先将新节点的配置保证与NameNode节点配置相同,在此文件指定新的DataNode节点名,重新启动NameNode便完成。但为保证原有DataNode节点与新添加DataNode节点的数据进行均衡存储,需要执行此命令进行重新平衡数据块的分布:/usr/local/hadoop/sbin/start-balancer.sh[hadoop@master~]$vi/usr/local/hadoop/etc/hadoop/yarn-site.xml

##指定YARN的相关配置

yarn.nodemanager.aux-services

mapreduce_shuffle

yarn.nodemanager.aux-services.mapreduce.shuffle.class

org.apache.hadoop.mapred.ShuffleHandler

yarn.resourcemanager.address

master:8032

yarn.resourcemanager.scheduler.address

master:8030

yarn.resourcemanager.resource-tracker.address

master:8035

yarn.resourcemanager.admin.address

master:8033

yarn.resourcemanager.webapp.address

master:8088[hadoop@master~]$scp-r/usr/local/hadoop/etc/hadoop/*hadoop@02:/usr/local/hadoop/etc/hadoop/[hadoop@master~]$scp-r/usr/local/hadoop/etc/hadoop/*hadoop@03:/usr/local/hadoop/etc/hadoop/Ø在master节点初始化并且启动Hadoop进程:[hadoop@master~]$

/usr/local/hadoop/bin/hdfsnamenode-format[hadoop@master~]$ls/usr/local/hadoop/name/

##初始化所生成的名称节点文件current注:第一次执行格式化,提示信息如上图,如若第二次再次执行格式化,需要将namenode节点的/usr/local/hadoop/name/目录内容清空,并且将datanode节点的/usr/local/hadoop/data/目录清空,方可再次执行格式化,否则会造成namenode节点与datanode节点的数据版本ID不一致,导致启动服务失败;[hadoop@master~]$/usr/local/hadoop/sbin/start-all.sh

##启动hadoop的所有进程ThisscriptisDeprecated.Insteadusestart-dfs.shandstart-yarn.shStartingnamenodeson[master]master:startingnamenode,loggingto/usr/local/hadoop/logs/hadoop-hadoop-namenode-master.outslave2:startingdatanode,loggingto/usr/local/hadoop/logs/hadoop-hadoop-datanode-slave2.outslave1:startingdatanode,loggingto/usr/local/hadoop/logs/hadoop-hadoop-datanode-slave1.outStartingsecondarynamenodes[master]master:startingsecondarynamenode,loggingto/usr/local/hadoop/logs/hadoop-hadoop-secondarynamenode-master.outstartingyarndaemonsstartingresourcemanager,loggingto/usr/local/hadoop/logs/yarn-hadoop-resourcemanager-master.outslave2:startingnodemanager,loggingto/usr/local/hadoop/logs/yarn-hadoop-nodemanager-slave2.outslave1:startingnodemanager,loggingto/usr/local/hadoop/logs/yarn-hadoop-nodemanager-slave1.out注:/usr/local/hadoop/sbin/start-all.sh命令等于/usr/local/hadoop/sbin/start-dfs.sh加/usr/local/hadoop/sbin/start-yarn.sh,前者启动hdfs系统,后者启动mapreduce调度工具,关闭两进程的命令为/usr/local/hadoop/sbin/stop-all.sh[hadoop@master~]$netstat-utpln(Notallprocessescouldbeidentified,non-ownedprocessinfo

willnotbeshown,youwouldhavetoberoottoseeitall.)ActiveInternetconnections(onlyservers)ProtoRecv-QSend-QLocalAddress

ForeignAddress

State

PID/Programname

tcp

0

0:50070

:*

LISTEN

7266/java

##namenode进程的http端口tcp

0

0:22

:*

LISTEN

-

tcp

0

001:8088

:*

LISTEN

7623/java

tcp

0

0:25

:*

LISTEN

-

tcp

0

001:8030

:*

LISTEN

7623/java

tcp

0

001:8032

:*

LISTEN

7623/java

tcp

0

001:8033

:*

LISTEN

7623/java

tcp

0

001:8035

:*

LISTEN

7623/java

tcp

0

001:9000

:*

LISTEN

7266/java

##客户端连接hdfs系统时用到的端口

tcp

0

001:50090

:*

LISTEN

7467/java

##secondarynamenode进程的http端口[hadoop@master~]$/usr/local/hadoop/bin/hdfsdfsadmin-report

##查看hadoop存储节点的状态信息ConfiguredCapacity:39631978496(36.91GB)PresentCapacity:33541480448(31.24GB)DFSRemaining:33541472256(31.24GB)DFSUsed:8192(8KB)DFSUsed%:0.00%Underreplicatedblocks:0Blockswithcorruptreplicas:0Missingblocks:0Missingblocks(withreplicationfactor1):0-------------------------------------------------Livedatanodes(2):Name:03:50010(slave2)Hostname:slave2DecommissionStatus:NormalConfiguredCapacity:19815989248(18.46GB)DFSUsed:4096(4KB)NonDFSUsed:3045191680(2.84GB)DFSRemaining:16770793472(15.62GB)DFSUsed%:0.00%DFSRemaining%:84.63%ConfiguredCacheCapacity:0(0B)CacheUsed:0(0B)CacheRemaining:0(0B)CacheUsed%:100.00%CacheRemaining%:0.00%Xceivers:1Lastcontact:ThuMay3103:03:09CST2018Name:02:50010(slave1)Hostname:slave1DecommissionStatus:NormalConfiguredCapacity:19815989248(18.46GB)DFSUsed:4096(4KB)NonDFSUsed:3045306368(2.84GB)DFSRemaining:16770678784(15.62GB)DFSUsed%:0.00%DFSRemaining%:84.63%ConfiguredCacheCapacity:0(0B)CacheUsed:0(0B)CacheRemaining:0(0B)CacheUsed%:100.00%CacheRemaining%:0.00%Xceivers:1Lastcontact:ThuMay3103:03:09CST2018[hadoop@master~]$jps7266NameNode

##namenode节点主进程7623ResourceManager

##mapreduce管理进程7467SecondaryNameNode

##namenode的备份进程,避免namenode进程意外停止,客户端无法读写数据7883JpsØ验证slave节点的进程状态;[root@slave1~]$

su-hadoop[hadoop@slave1~]$netstat-utpln(Notallprocessescouldbeidentified,non-ownedprocessinfo

willnotbeshown,youwouldhavetoberoottoseeitall.)ActiveInternetconnections(onlyservers)ProtoRecv-QSend-QLocalAddress

ForeignAddress

State

PID/Programname

tcp

0

0:22

:*

LISTEN

-

tcp

0

0:25

:*

LISTEN

-

tcp

0

0:13562

:*

LISTEN

3391/java

tcp

0

0:50010

:*

LISTEN

3274/java

tcp

0

0:50075

:*

LISTEN

3274/java

tcp

0

0:39938

:*

LISTEN

3391/java

tcp

0

0:50020

:*

LISTEN

3274/java

tcp

0

0:38373

:*

LISTEN

3274/java

tcp

0

0:8040

:*

LISTEN

3391/java

tcp

0

0:8042

:*

LISTEN

3391/java

[hadoop@slave1~]$jps3526Jps3274DataNode3391NodeManager

##与namenode执行心跳信息的节点进程Ø网页查看http://master:50070统计hadoop集群的信息;ØHadoop中数据的基本管理:[hadoop@master~]$pwd/home/hadoop[hadoop@master~]$touch1.file[hadoop@master~]$ls1.file[hadoop@master~]$hadoopfs-lsfile:///home/hadoop/

##查看本地文件[hadoop@master~]$hadoopfs-ls/

##查看hadoop文件[hadoop@master~]$hadoopfs-mkdir/input1[hadoop@master~]$hadoopfs-put/home/hadoop/1.file/input1

##上传本地文件[hadoop@master~]$hadoopfs-ls/input1Found1items-rw-r--r--

2hadoopsupergroup

02018-05-3107:38/input1/1.file[hadoop@master~]$hadoopfs-cat/input1/1.file

##查看hadoop文件内容[hadoop@master~]$hadoopfs-catfile:///home/hadoop/1.file

##查看本地文件内容[hadoop@master~]$hadoopfs-get/input1/1.file/tmp

##下载hadoop文件[hadoop@master~]$ls/tmp/1.file[hadoop@master~]$hadoopfs-mkdir/input2[hadoop@master~]$hadoopfs-mv/input1/1.file/input2/1.txt[hadoop@master~]$hadoopfs-ls/input2Found1items-rw-r--r--

2hadoopsupergroup

02018-05-3107:38/input2/1.txt[hadoop@master~]$hadoopfs-cp/input2/1.txt/input2/2.txt[hadoop@m

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论