首页 > 其他分享 >周总结一

周总结一

时间:2024-07-13 20:11:52浏览次数:13  
标签:总结 HDFS Hadoop 学习 算法 block 客户端

hadoop学习总结

 

一、学习总结

1、hadoop集群的搭建。

由于之前在学校中学习过伪分布式的搭建,在构建集群时还是比较容易上手的。主要的搭建过程分为以下几步:第一步,配置hosts列表;第二步,安装JDK;第三步,免密钥登录配置;第四步,Hadoop配置部署;第五步,将主节点的配置文件复制到从节点;第六步,启动Hadoop集群。在这个过程中我认为需要注意的问题主要有一下几点:

第一点,注意普通用户和root用户的切换。比如配置hosts列表、安装JDK是在root用户下,而免密钥登录配置、Hadoop配置部署都是在普通用户下。在安装的过程中出现了很多由于用户不对而出现错误。这个问题不太大,但在学习前期特别容易忽略。

第二点,就是配置过程中的细节问题。在设置环境变量的时候,将路径要写正确,还有就是在配置文件中是严格区分大小写的,这点也容易出现错误。在部署hadoop集群的时候,需要更改很多的配置文件(需要注意的一点是在hadoop2.0版本之后有了yarn,需要进行一些yarn的相关配置),在整个配置过程中,出现问题最多的地方就是这些配置文件,所以在配置的过程中需要仔细一点。

第三点,在安装部署完成启动hadoop集群时,需要进行一次格式化文件系统的操作,这个操作仅限于在第一次完成部署之后进行(之前在自学的时候当启动hadoop出现问题后,多次进行格式化),因为每格式化一次集群上的数据信息就要清空。

2、在hadoop内部HDFS、MR的工作过程。

HDFS主要包括NameNode、DataNode、SecondaryNameNode,在HDFS中主要进行的是数据的存取,而在MapReduce中进行的是数据的处理。总结一下它们的过程如下:

HDFS的读流程:当客户端发送读请求后,通过DistributedFileSystem API调用open函数,发送请求到NN节点获得block的位置信息,NN返回block的位置信息,客户端收到后开始读。通过新的FSDataInputStream API 并发的读各个block,读完之后关闭流,最后在客户端形成统一的文件。

HDFS的写流程:客户端通过DistributedFileSystem API 调用create方法创建一个文件,发送请求给NN,同时将文件名、文件大小、文件的拥有者信息发送给NN,NN根据文件大小确定需要切成多少个block块,这些block块分布在哪些DN上等信息返回给客户端。客户端根据FSDataOutputStream API 将一个block写到一个DN上,由DN创建线程按照副本放置原则将block复制到其他DN上,然后返回给客户端一个回馈信息,客户端上传完成后再汇报给NN,NN返回给客户端上传成功的信息。

MR的处理流程:将HDFS中的原始数据通过split切成数据片段(通常情况下一个split对应一个block块),每一个split由一个map task线程执行,map以key value的形式将结果输出给shuffer,在shuffer中进行合并和排序,key值相同的在一个数据块中,然后将数据传给reduce执行,reduce产生最终的结果。

在该过程中需要注意的问题主要有:在HDFS的读流程中由于每个block默认有三个副本,客户端在读的过程中是随机的读其中的一个副本,同时并发的读其他的block。在HDFS的写流程中需要特别注意的一点是block的复制是不需要客户端进行操作的,是DN自己进行复制。

3、利用hadoop进行数据的统计分析

之前一直不了解怎么用hadoop进行数据分析,通过学习对该过程有了一定的了解,总结了一下主要包括一下几个步骤:将需要处理的数据上传到HDFS;创建类并在类中定义相关算法;将类打包上传到虚拟机中;通过定义的算法处理数据;查看处理结果。需要注意的是,这几个过程中数据的分块,数据块的分片是不需要人为进行控制的,该过程的核心是算法的定义,这个也是以后学习的重点。

4、对一些工具的简单学习和安装部署。

Hive作为管理和查询结构化/非结构化数据的数据仓库,使用HQL(Hive SQL)作为查询接口,使用HDFS作为底层存储,使用MR作为计算(执行)层。

Mahout作为一个工具包,涉及了许多机器学习的常用算法,比较有印象的是推荐引擎算法和聚类算法(老师主要讲了这两个算法),在推荐引擎算法中如何根据用户不同模型设计相应的推荐系统是关键;聚类算法主要针对K均值算法展开了介绍,对利用K均值进行聚类的原理有了了解,同时也运行了实例看到了聚类的结果。

HBase是一个分布式的、面向列的开源数据库,HDFS为HBase提供可靠存储支持,MR为HBase提供高性能计算能力,ZooKeeper提供稳定服务。数据库中的表被切分成小的数据单元即Region,每个HRegion对应表中的一个Region,HRegionServer管理了一系列HRegion对象,HRegion由多个HStore组成,每个HStore对应了表中的一个列簇的存储。

Sqoop是一个用来将Hadoop和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库中的数据导入到HDFS中,也可以将HDFS中的数据导入到关系型数据库中。

Storm是一个实时流计算系统,Storm的主节点是Nimbus,从节点是Supervisor,Storm的实时处理数据被封装在topology中,一个topology是由一组Spout组件和Bolt组件通过Stream Groupings进行连接的。

Kafka作为分布式发布-订阅消息系统,使用磁盘做缓存,消息保存在磁盘上,可以保存大量的未处理信息。Kafka的组件主要有producer、broker和consumer。Broker作为Kafka的核心组件,是prodecer和consumer之间的桥梁。

Spark作为一种内存计算框架,比MR快10~100倍,代码量比MR少2~5倍。Spark的核心概念是RDD,由多个Partition构成,可以存储在磁盘或内存中。Spark程序设计流程为:创建Spark Context对象;创建RDD;在RDD上进行转换和action;返回结果。

简单学习完这些工具之后,我认为需要弄清楚以下两个问题:

第一,Hive和HBase都可以存储数据,那么它们的区别在哪里?

Hive中的表是事实表,对Hive中的表不能进行增、删、改,只能进行查操作;HBase中的表是事务表,HBase中的数据可以进行增删改查。同时,Hive可以从HBase中读取数据。

第二,从处理时延上说,Storm<Spark<Hadoop,那么为什么Hadoop还有存在的必要?

就Storm和Hadoop来讲,虽然Storm是一种流处理框架,能够实时的对数据进行处理,但这种实时性的框架不能处理复杂的算法。而Spark是基于MR算法实现的分布式计算,拥有MR所具有的优点,同时由于Spark是一种内存计算框架,计算速度比Hadoop要快,这些都是Spark优于Hadoop的体现,但需要注意的一点是Spark的计算基本是在内存中进行,对内存的要求就比较高,代价也会很多。所以在某些情况下,Hadoop还是最佳的计算框架。

5、对虚拟机中出现的一些错误的处理。

当在虚拟机中利用某种工具去处理问题时,当在该过程中出现了错误,要试着去该工具的安装目录下,找到logs这一目录,该目录下存放的是日志文件,打开日志文件查看错误警告,自己试着根据错误警告将问题解决。老师讲的这一方法感觉挺有用的,自己去找到问题的根源然后解决,印象会更加深刻。

 

二、今后学习方向

(1)一周的时间,学习的内容比较多,很多知识点只是有了一个大概的了解:知道是什么,怎么安装部署,但具体的操作就不太明确了。所以接下来的工作就是针对每一个知识点去展开进行学习,学习具体的操作过程,学习它们的应用实例。

(2)之前一直不太明白Hadoop和JAVA的交集在哪里,通过这次的学习知道了Hadoop是通过调用JAVA的API对数据进行相应的操作,也就是说在Hadoop的学习中对JAVA水平的要求也是比较高的。现在JAVA的水平还是比较低,所以今后也要抓紧对JAVA的学习,提高编程水平。

(3)对数据处理的核心是对算法的设计,而算法设计的好坏直接关系到系统的优化操作,所以我认为今后的学习重点应该是对算法的研究上。在这次学习过程中简单接触了推荐引擎算法和聚类算法,算是有了一个开始,以后应该多了解和算法相关的知识。

标签:总结,HDFS,Hadoop,学习,算法,block,客户端
From: https://www.cnblogs.com/0608lin/p/18300602

相关文章

  • 小学期第二周总结
    数据结构第二阶段综合应用算法训练自选题,我选择的是文件压缩解压。一、问题描述:名称:基于哈夫曼编码的文件压缩解压目的:利用哈夫曼编码压缩存储文件,节省空间输入:任何格式的文件(压缩)或压缩文件(解压)输出:压缩文件或解压后的原文件功能:利用哈夫曼编码压缩解压文件性能:快速二、......
  • 每周总结1
      HadoopHDFS(核心):Hadoop分布式存储系统;Yarn(核心):Hadoop2.x版本开始才有的资源管理系统;MapReduce(核心):并行处理框架;HBase:基于HDFS的列式存储数据库,它是一种NoSQL数据库,非常适用于存储海量的稀疏的数据集;Hive:ApacheHive是一个数据仓库基础工具,它适用于处理结构化数据......
  • 第二周进度总结
    (1)本周做了什么,花在学习上多长时间,花在代码时间上多长时间,花在解决问题用了多长时间。本周完成了yarn集群和hive数据库的部署使用的命令如下su-aaacd/export/server/hadoop/etc/hadoop/llvimmapred-env.shexportJAVA_HOME=/export/server/jdkexportHADOOP_JOB_HISTORYSERV......
  • 第二周总结
    一、周任务完成情况:1.每天通过书籍与b站网课自主学习Java一小时,完成Java循环,条件及数组部分的语法学习。2.阅读《大道至简》第二章“是懒人创造了方法”与第三章“团队缺乏的不只是管理”。3.每日完成pta基础题目集2~3题。二、下周计划:1.使用Java语言完成部分练习题。2.继续......
  • python基础篇总结:数据类型
    在python中数据类型主要是以下9种分别是1.Int(整型);2.Float(浮点型);3.Bool(布尔型);4.Str(字符串);5.None(空值);6.List(列表);7.Tuple(元组);8.Dict(字典);9.Set(集合)等。一.Int(整数)整数是Python中最基本的数值类型,用于表示整数值。1.定义整数变量:2.使用内置函数处理整数:3.进行算......
  • 可视化课设总结(星巴克网页爬取信息,百度地图网页版爬取信息,百度地图api,pyecharts库,pyth
    一、引言       本博客是本人是基于本人可视化课设所做的总结,其中有些过程的实现可能并不是最优的实现方法,有些实现效果也因为本人的实力有限,并不能达到预期的效果,所以也欢迎大家指点和改良。(刚考完期末回家,终于有时间把这个课设写个博客了,虽然这课设是明天截至的,我今......
  • 2023-2024第二学期的助教工作总结(计算机网络)
    一、助教工作的具体职责和任务 (包括:你和老师是如何配合的、你和课程其他助教是如何配合的(如果有的话))1.及时跟进学生学习进度每周询问老师教学进度,自己复习知识点,随时准备回复学生问题,并对后续进行安排2.编写题目,拓宽题库每周编写5-8题题目,写出答案,并发给老师审核3.和老师......
  • 第二周总结
    学习进度:(1)阅读完《大道至简》第二章内容,懒人造就了方法,人的精力有限,提出新的方法,解决的将是影响做事成效的根本问题,这章里,举了一个学员学了一年,仍然不会写程序,作者告诉这个学员,要把学过的知识分类,就像是常用的放在手边,不常用的放在书柜里,这样这个学员在九个月的时候就可以写代码......
  • JS基础知识总结(1)
    1、编写一个程序,用于判空和判断对象是否被定义。functionisUndefined(arg){if(typeofarg=='undefined'||JSON.stringify(arg)=="{}"){returntrue;//第二个选项是把空对象筛选出去}else{//这里需要解释一......
  • 20240712总结、视图函数映射报错
    网络ip、端口,服务器人脸识别:1.接口,刚开始以为是调用消费机的接口,后来知道是消费机调用我的接口。2.对Django和Flask框架不熟悉,只会基本结构,Flask多套几层蓝图就懵了。3.对服务器、ip这些不明白,搞不懂消费机是怎么和服务器连上的。好像还用了docker4.对端口不熟悉,我对端口的理......