hadoop文件结构分析

(六)Hadoop实现简单的日志分析 1)创建Maven项目 2)引入依赖 3)编写Hadoop 日志分析相关Job代码 4)导出jar包 5)上传到Hadoop 集群 6)编写Hadoop jar包执行jar包 7)手动执行验证 8)使用后台系统远程手动实现分析 9)使用定时任务实现定时分析 ... 阅读详情

hadoop文件数据结构在代码里的组成可以分为 storage、block、file、Inode几类


很容易搞混,下面对这几个部分进行分别分析

1storage

Storage的结构图下图:

Storage是系统运行时对应的数据结构。从大到小,Hadoop中最大的结构是Storage,最小的结构是block。


Storage保存了和存储相关的信息(包括节点的类型:namenode/datanode,状态版本,namespace id, 状态的创建时间),它继承了StorageInfo。


Storage包括 protected List<StorageDirectory> storageDirs = new ArrayList<StorageDirectory>();

StorageDirectory是Storage的内部类,

Storage可以存储在多个StorageDirectory内,但是要保证这些文件的版本号是一致的,在namenode/datanoe初始化的时候会读取(还原)存储状态信息。


应用于DataNode的DataStorage,则继承了Storage,总体类图如下:

DataStorage是Storage的子类,专门应用于DataNode。对DataNode的升级/回滚/提交过程,就是对DataStorage的doUpgrade/doRollback/doFinalize分析得到的。

DataStorage提供了format方法,用于创建DataNode上的Storage格式化。


StorageInfo包含了3个字段,分别是layoutVersion:版本号,如果Hadoop调整文件结构布局,版本号就会修改,这样可以保证文件结构和应用一致。

namespaceID是Storage的ID。


StorageDirectory中最重要的方法是analyzeStorage,它将根据系统启动时的参数和我们上面提到的一些判断条件,返回系统现在的状态。StorageDirectory可能处于以下的某一个状态(与系统的工作状态一定的对应):

 

 

Java代码   收藏代码
  1. NON_EXISTENT:指定的目录不存在;     
  2. NOT_FORMATTED:指定的目录存在但未被格式化;     
  3. COMPLETE_UPGRADE:previous.tmp存在,current也存在     
  4. RECOVER_UPGRADE:previous.tmp存在,current不存在     
  5. COMPLETE_FINALIZE:finalized.tmp存在,current也存在     
  6. COMPLETE_ROLLBACK:removed.tmp存在,current也存在,previous不存在     
  7. RECOVER_ROLLBACK:removed.tmp存在,current不存在,previous存在     
  8. COMPLETE_CHECKPOINT:lastcheckpoint.tmp存在,current也存在     
  9. RECOVER_CHECKPOINT:lastcheckpoint.tmp存在,current不存在    NORMAL:普通工作模式。  
  10.    

 

StorageDirectory处于某些状态是通过发生对应状态改变需要的工作文件夹和正常工作的current夹来进行判断。状态改变需要的工作文件夹包括:

 

Java代码   收藏代码
  1. previous:用于升级后保存以前版本的文件  
  2. previous.tmp:用于升级过程中保存以前版本的文件  
  3. removed.tmp:用于回滚过程中保存文件  
  4. finalized.tmp:用于提交过程中保存文件  
  5. lastcheckpoint.tmp:应用于从NameNode中,导入一个检查点  
  6. previous.checkpoint:应用于从NameNode中,结束导入一个检查点  
 

 

有了这些状态,就可以对系统进行状态相关操作。


fsImage是storage的子类,提供了状态的管理功能。FSImage也能够管理多个Storage,而且还能够区分Storage为IMAGE(目录结构)/EDITS(日志)/IMAGE_AND_EDITS(前面两种的组合)。



在namnode初始化的时候,会初始化FSNamesystem, 然后查找StorageDirectory,查找配置文件(dfs.name.edits.dir和 dfs.name.dir)就是正在修改的命名空间文件和命名空间文件,放到List<StorageDirectory> storageDirs 中,循环找出需要进行修复或者回滚的文件内容,进行处理。查找到最新的StorageDirectory,装载image文件(\home\baqun\tmp\dfs\name\current\fsimage其中包括了版本信息、文件个数、最后修改时间、包含的block的信息、权限控制信息、datanode信息、正在创建的文件信息)

(这是一个复杂的过程,把blocks的信息、inode的信息,permission、parent inode然后组装起来 读取datanode\)

然后把edit log也装载进来:读取两个edit文件,一个是之前的edit log,另外一个是正在写的log文件,装载然后merge进内存。


2 datanode

相关类结构如下:


DatanodeInfo和DatanodeID都定义在包org.apache.hadoop.hdfs.protocol。


DatanodeID只包含了一些配置信息(name:hostname:portNumber,storageID,infoPort,ipcPort),DatanodeInfo增加了一些动态信息(使用容量,结余等)。


DatanodeDescriptor是DatanodeInfo的子类,包含了NameNode需要的附加信息。DatanodeDescriptor 包含了DataNode上一些Block的动态信息。DatanodeDescriptor包含了内部类BlockTargetPair,它保存Block和对应DatanodeDescriptor的关联,BlockQueue是BlockTargetPair队列。DatanodeDescriptor包含了两个BlockQueue,分别记录了该DataNode上正在复制(replicateBlocks)和Lease恢复(recoverBlocks)的Block。同时还有一个Block集合,保存的是该DataNode上已经失效的Block。

 

Java代码   收藏代码
  1. private BlockQueuereplicateBlocks =new BlockQueue();  
  2. private BlockQueuerecoverBlocks =new BlockQueue();  
  3. private Set<Block>invalidateBlocks =newTreeSet<Block>();  
 

 

DatanodeDescriptor提供一系列方法,用于操作上面保存的队列和集合。也提供get*Command方法,用于生成发送到DataNode的命令。

而DatanodeRegistration存储了namenode需要进行验证的一切信息,还包含了StorageInfo(layoutVersion,namespaceID创建时间)

只有DatanodeDescriptor 是放在namenode包中的,其他都是放在protocol包

DataNode中的每个block副本由本机本地文件系统中的两个文件组成。第一个文件包含数据本身,第二个文件是该block的元数据包括该block数据的校验和及该block的 generation stamp。数据文件大小等于该block的实际长度,同时不需要补上额外的空间以达到标准的块大小{!比如该block只有10MB,那么本地文件系统中的数据文件大小就是10MB,而无需在额外补足让它变成标准的128MB}。因此,如果一个block只有标准大小的一半,那么本地磁盘也只需要半个标准block所需的空间。

 在每个DataNode启动时,会连接到NameNode执行一个握手。握手的目的是为了验证名字空间ID及DataNode的软件版本。如果其中只要有一个无法与NameNode匹配,那么DataNode会自动关闭。

 名字空间ID是在文件系统创建时分配给它的实例编号。名字空间ID会持久化存储在集群的所有节点中。具有不同名字空间ID的节点无法加入到集群中,这就保护了文件系统的数据完整性。

 软件版本的一致性是非常重要的,因为不兼容的版本可能会导致数据损坏或丢失,同时在一个具有数千个节点的大规模集群上,很容易会在升级期间忽略掉某些节点,比如它没有在升级之前正确的关闭或者在升级时处于不可用的状态。

 允许一个新初始化的并且没有任何名字空间ID的DataNode加入到集群中,它会接受集群的名字空间ID。{这是因为很多情况下我们需要对集群进行扩容,因此HDFS应该允许我们往集群中添加新机器}

 在握手过程完成之后,DataNode会与NameNode进行注册。DataNodes会持久化存储它们自己对应的那个唯一的存储ID。存储ID是DataNode的内部标识符,可以保证即使是它更换了IP地址或者端口也能识别出来。存储ID是在DataNode第一次向NameNode进行注册时分配的,之后它就再也不会改变。

 DataNode会通过向NameNode发送一个block report来声明它所拥有的block副本。一个block report包含该block的id,世代戳(generation stamp)以及它所持有的block副本长度。当DataNode注册完成之后就会立即发送第一次的block report。之后,会每隔1小时就进行一次block reports发送,从而为NameNode提供关于该集群内的所有block副本的最新位置信息。

 在正常情况下,DataNode会向NameNode发送心跳信息以证实它自己正在运行以及它所持有的block副本是可用的。默认的心跳周期是3秒钟。如果NameNode在十分钟内收不到来自某个DataNode的心跳信息,它会认为该DataNode已经不能提供服务,它所持有的block副本就变成了不可用状态。NameNode就会将这些block副本在其他DataNode上创建出来。

 来自DataNode的心跳中还会携带一些关于总的存储容量、存储空间使用量及当前正在处理的数据传输量方面的信息。这些统计信息会被用于NameNode的空间分配及负载平衡决定中。

 NameNode不会直接联系DataNode,它会通过对心跳的响应信息来向DataNodes发送指令。这些指令包括如下一些命令:

l  复制blocks到其他节点

l  删除本地的block副本

l  重新注册或者关闭节点

l  发送一个即时block report

 这些命令对于维护整个系统的完整性是十分重要的,因此就算是在大规模的集群中,保持心跳的通畅也是非常重要的。NameNode每秒可以处理数千个心跳请求而不会影响到其他的NameNode操作。

3 inode*

INode*抽象了文件层次结构。如果我们对文件系统进行面向对象的抽象,一定会得到和下面一样类似的结构图(类INode*):


Hadoop在内存中存储了file/block的层级结构,Inode就是一个最上层的抽象类,存储了普通的信息:修改时间、父node。内部类DirCounts封装了namespace使用和diskspace使用。

INode是一个抽象类,它的两个字类,分别对应着目录(INodeDirectory)和文件(INodeFile)。INodeDirectoryWithQuota,如它的名字隐含的,是带了容量限制的目录。INodeFileUnderConstruction,抽象了正在构造的文件,当我们需要在HDFS中创建文件的时候,由于创建过程比较长,目录系统会维护对应的信息。

INode中的成员变量有:name,目录/文件名;modificationTime和accessTime是最后的修改时间和访问时间;parent指向了父目录;permission是访问权限。HDFS采用了和UNIX/Linux类似的访问控制机制。系统维护了一个类似于UNIX系统的组表(group)和用户表(user),并给每一个组和用户一个ID,permission在INode中是long型,它同时包含了组和用户信息。

INodeDirectory是HDFS管理的目录的抽象,它最重要的成员变量是:

 

Java代码   收藏代码
  1. private List<INode>children;  
  2.    

 

就是这个目录下的所有目录/文件集合。INodeDirectory也是有大量的get和set方法,都很简单。INodeDirectoryWithQuota进一步加强了INodeDirectory,限制了INodeDirectory可以使用的空间(包括NameSpace和磁盘空间)。

INodeFile是HDFS中的文件,最重要的成员变量是:

 

Java代码   收藏代码
  1. protected BlockInfo blocks[] =null;  

 

这是这个文件对应的Block列表,BlockInfo增强了Block类。


INodeFileUnderConstruction

INodeFileUnderConstruction保存了正在构造的文件的一些信息,包括clientName,这是目前拥有租约的节点名(创建文件时,只有一个节点拥有租约,其他节点配合这个节点工作)。clientMachine是构造该文件的客户端名称,如果构造请求由DataNode发起,clientNode会保持相应的信息,targets保存了配合构造文件的所有节点。


INodeDirectoryWithQuota

有一定限额的文件目录类


4 fileSystem

程序员通过org.apache.hadoop.fs.FileSystem来和HDFS打交道

子类分布式文件系统包含了dfsClient,用来调用数据

DistributedFileSystem是分布式文件系统的主要实现类:

文件系统之间的交互,通过DFSClient实现


初始化的时候就新建了DFSClient

 

Java代码   收藏代码
  1. public void initialize(URI uri, Configuration conf) throws IOException {  
  2.   setConf(conf);  
  3.   
  4.   String host = uri.getHost();  
  5.   if (host == null) {  
  6.     throw new IOException("Incomplete HDFS URI, no host: "+ uri);  
  7.   }  
  8.   
  9.   InetSocketAddress namenode = NameNode.getAddress(uri.getAuthority());//localhost/127.0.0.1:9200  
  10.   this.dfs = new DFSClient(namenode, conf, statistics);  
  11.   this.uri = NameNode.getUri(namenode);  
  12.   this.workingDir = getHomeDirectory();  
  13. }  
 

 

5 block

代码结构如下



BlocksMap(主要是FSNamesystem负责管理)保存了Block和它在NameNode上一些相关的信息。其核心是一个map:Map<Block, BlockInfo>。BlockInfo扩展了Block,保存了该Block归属的INodeFile和DatanodeDescriptor,同时还包括了它的前继和后继Block。有了BlocksMap,就可以通过Block找对应的文件和这个Block存放的DataNode的相关信息。


FSDir(FSDataset)对应了hadoop的目录,目录可以是层级嵌套的,因为每一个文件夹规定了所包含的块的个数的限制.

FSDir实现了对block的管理,添加block的时,会优先使用不创建子目录的方式添加(所包含的block个数不到到最大值)。


FSVolume对应了Storage的管理。

datdanode初始化的时候:

 

Java代码   收藏代码
  1. storage = new DataStorage();  
  2. FSDatasetInterface data = new FSDataset(storage, conf);  
  3.    

 

将storage和block的信息进行关联管理。


FSDataset包括变量:

 

Java代码   收藏代码
  1. FSVolumeSet volumes;  
  2. private HashMap<Block,DatanodeBlockInfo> volumeMap = null;  

 

实现了block和datanode信息的关联。


 

总结:

他们之间的关系可以通过下图来表示


基于hadoop分析,了解hive的使用 一、Hadoop理论   Hadoop是一个专为离线和大规模数据分析而设计的,并不适合那种对几个记录随机读写的在线事务处理模式。 Hadoop=HDFS(文件系统,数据存储技术相关)+ Mapreduce(数据处理)   Hadoop的数据来源可以是任何形式,在处理半结构化和非结构化数据上与关系型数据库相比有更好的性能,具有更灵活的处理能力,不管任何数据形式最终会转化为key/value,k... 阅读详情

相关推荐

使用Hadoop分析大数据

大数据由于其庞大的规模而显得笨拙,并且大数据需要工具进行高效地处理并从中提取有意义的结果。Hadoop是一个用于存储,分析和处理数据的开源软件框架和平台。本文是Hadoop如何帮助分析大数据的初学者指南。 大数据(Big Data)是一个指大量数据的术语,包括传统数据库中存在的结构化数据以及文本文档,视频和音频等非结构化数据。大数据不仅仅是数据,也是各种工具、技术、框架和平台的集合。交通数据、搜...

Myhoooyo的博客 8196

Hadoop HDFS(分布式文件系统)简介

它最初是根据Google的GFS(Google File System)论文设计而来,通过将大规模数据集分布式存储在集群中的多个计算节点上,实现了高可靠性、高容错性和高吞吐量的数据存储和访问。大规模日志存储和分析:HDFS适用于存储和分析大规模的日志数据。用户可以将日志文件写入HDFS,并使用适当的工具和技术进行日志分析、问题排查和趋势预测。存储和处理大数据:HDFS是存储和处理大规模数据的理想选择,它提供了高可扩展性、高容错性和高吞吐量,适用于处理大数据集和执行复杂的分布式计算任务。

wang2leee的博客 425

全面解析Hadoop 2.7.0 Lib包及其应用

在大数据技术的浪潮中,Hadoop以其开源、可扩展和容错的特性成为了存储和处理大型数据集的首选平台。本章将带领读者初步了解Hadoop 2.7.0版本,旨在为接下来深入探索Hadoop lib包及其核心库文件打下基础。

weixin_28922227的博客 883

【Hadoop】配置文件

hadoop 1.55

qq_70770395的博客 1929

全面了解Hadoop核心JAR组件

随着大数据技术的兴起,Hadoop作为其代表性的开源分布式计算框架,已成为处理海量数据的基石。Hadoop允许用户以较低的成本高效地存储、处理和分析大量数据,成为IT领域内极具影响力的技术之一。本章将为读者展开Hadoop的全貌,从其设计理念到分布式存储和计算的基本原理,再到具体组件的详细介绍,逐步揭开Hadoop的神秘面纱,为后续章节的深入分析打下坚实的基础。

weixin_42577735的博客 1138

基于Hadoop的网上购物行为分析设计与实现

sink3指定了一个名为sink3的数据输出端,使用了hive模式,hive的metastore地址为thrift://hadoop:9083,数据库名称为taobao,表名为taobao_data,数据格式为DELIMITED,分隔符为逗号,字段名称为user_id、item_id、behavior_type、user_geohash、item_category、date、hour,每次提交数据的批量大小为90。然后,将分析结果存储到hive数据库中,并导出到MySQL数据库,便于数据的存储和分析展示。

迷茫与徘徊只会让你陷入绝境,欢迎私信博主,带你开始提升变现价值! 1万+

Hadoop配置文件

部分内容参考:http://www.linuxqq.net/archives/964.html http://slaytanic.blog.51cto.com/2057708/1100974/ hadoop的重要配置文件有以下几个: 在1.2.1版本中,core-default.xml有73个属性,hdfs-default.xml有76个属性,...

weixin_30426879的博客 1038

Bartender 2021破解版安装教程:手把手教你从下载到激活(附详细步骤图)

本文详细介绍了BarTender 2021专业版的安装与高效应用指南,从基础配置到高级条码设计,帮助用户快速掌握标签设计与打印技术。内容涵盖安装步骤、标签模板创建、数据连接与批量打印技巧,以及高级功能如安全策略与自动化集成,适合零售、物流、制造等行业用户提升工作效率。

p4q5r6s7t的博客 2634

Hadoop分布式文件系统(一)

狭义上Hadoop指的是Apache软件基金会的一款开源软件。如果是集群外提交,则随机挑选一台磁盘不太满,CPU不太忙的节点。MapReduce进行编程处理,但是很多软件的底层依然在使用MapReduce引擎来处理数据。作为大数据生态圈第一代分布式计算引擎,由于自身设计的模型所产生的弊端,导致企业一线。生活中类比工厂的流水线:结论:流式其实也是变种的并行计算。第二个副本:放置在于第一个副本不同的 机架的节点上。广义上Hadoop指的是围绕Hadoop打造的。一个程序员最重要的能力是:写出高质量的代码!

杀神lwz的博客 1653

使用LogisticRegression和LightGBM模型对信贷违约进行预测----基于kaggle比赛数据

3.分离数值型变量与类别型变量,发现有些数值型变量因为输入不规范,比如数值中含有字符(28_,_10000_等)被划分为类别型变量 ,比如 'Age','Annual_Income','Num_of_Loan', 'Num_of_Delayed_Payment', 'Changed_Credit_Limit','Credit_Mix','Monthly_Balance', 'Outstanding_Debt' ,'Amount_invested_monthly'等。三、分箱,woe编码,计算IV值。

I_am_a_big_tiger的博客 1682

OpenCV+ArUco实战:如何用Python实现高精度二维码测距(附完整代码)

本文详细介绍了如何使用Python和OpenCV实现基于ArUco标签的高精度单目视觉测距。通过相机标定、标签检测和三维位置估算,结合完整代码示例,帮助开发者在机器人导航、工业自动化等场景中实现厘米级距离测量,并探讨了精度优化与三维可视化等进阶应用。

weixin_29052717的博客 476

hadoop分布式文件系统

分布式文件系统:管理网络中跨多台计算机存储的文件系统称为分布式文件系统。提出背景:当数据集的大小超过一台独立的物理计算机的存储能力时,就有必要对它进行分区(partition)并存储到若干台单独的计算机上。Hadoop的分布式文件系统称为HDFS(Hadoop Distributed Filesystem)。

Anolzo 3053

手把手复现金蝶云星空V8.1文件上传漏洞(附完整POC与修复方案)

本文深度解析金蝶云星空V8.1文件上传漏洞,提供详细的漏洞复现步骤与完整POC,涵盖技术原理、测试环境搭建及验证流程。同时给出多维防护方案,包括官方补丁部署、临时缓解措施和长期安全加固建议,帮助企业有效防范任意文件上传风险。

weixin_30505225的博客 181

Hadoop的管理

HDFS文件结构 NameNode的文件结构 ${dfs.name.dir}/current/VERSION                                           /edits                                           /fsimage

大T的专栏 1477

Linux文件操作四剑客

① /^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$/ // 年-月-日 yyyy-MM-dd / yy-MM-dd 格式。⑥“^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$” //正浮点数。

wuds_158的博客 1610

进阶06:C#连接TwinCAT 3使用ADS通讯

本文介绍了使用C#通过ADS协议与倍福TwinCAT3 PLC通讯的实现方法。主要内容包括:1)在两台电脑上安装TwinCAT3开发环境并建立网络连接;2)在TwinCAT中定义变量和结构体;3)使用C# Winform开发界面,通过TwinCAT.Ads.dll实现读写功能;4)实现主动读取和通知两种数据获取方式。详细说明了连接建立、变量定义、读写操作及事件通知的实现代码。该方案实现了对PLC寄存器数据的实时监控和操作,为工业控制系统的开发提供了参考。

weixin_38637405的博客 3688

hadoop edits 文件损坏修复办法

文章来源:http://blog.youkuaiyun.com/wisgood/article/details/47066017?ref=myread 前段时间公司hadoop集群宕机,发现是namenode 磁盘满了。。清理出部分空间后,重启集群时,重启失败。 又发现集群Secondary namenode 服务也恰恰坏掉,导致所有的操作log持续写入edits.new 文件,等集群

Thinking 1953

Vue3 - 详细实现流程图编辑器可视化平台示例代码,打造前端web网页流程图在线编辑绘制操作展示,vue3自定义绘制流程图在页面上画流程图功能(提供各种操作按钮及节点控件,界面美观交互式流程图插件)

vue3,绘制流程图,在线流程图制作,在vue3中实现流程图,vue3做一个制作流程图的功能,vue3流程图组件,vue3流程图,流程图绘制展示,vue3流程图可视化在线编辑源码,基于VUE3的在线绘制流程图工具,vue3+logicflow流程图,绘制动态流程图并自定义节点和线,vue使用logicFlow绘制流程图,生成各种流程图图形可连接点移除,基于Vue的流程图组件,工作流程图,流程编辑器,vue3流程组件,vue-flow绘制流程图,绘制流程图示例demo,vue3 logicflow流程图使用教

🏆 前端领域优质创作者 9967

hadoop edits 文件损坏修复办法

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34161064的博客 553

【Android 11】使用Android Studio调试系统应用之Settings移植(三):构建Settings、SettingsLib项目文件

基于android 11,本系列文章力争实用,讲解使用AS调试系统app的方法,并提供了配套源下载,供学习调试。上一篇文章[Android 11]使用Android Studio调试系统应用(二):依赖分析、android.bp、静态和动态依赖,讲解了如何搭建编译服务器,如何下载AOSP源码,如何切换到AOSP的指定分支(android-11-r39),以及如何编译、解决编译错误、运行模拟器,本文将开始讲解如何构建Settings的AS工程文件! 走过、路过,有用过的同学,记得给个赞O(∩_∩)O哈!

上周的博客 2679

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

基于Hadoop部署实践对网站日志分析(大数据分析案例)

本次要实践的数据日志来源于国内某技术学习论坛,该论坛由某培训机构主办,汇聚了众多技术学习者,每天都有人发帖、回帖。至此,我们通过Python网络爬虫手段进行数据抓取,将我们网站数据(2013-05-30,2013-05-31)保存为两个日志文件,由于文件大小超出我们一般的分析工具处理的范围,故借助Hadoop来完成本次的实践。

迷茫与徘徊只会让你陷入绝境,欢迎私信博主,带你开始提升变现价值! 1万+

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

基于Hadoop的电商用户分析系统

本文设计并实现了一个基于Hadoop的电商实时用户行为分析系统。系统采用Hadoop生态技术架构,包括HDFS、MapReduce、YARN等核心组件,结合Flume日志采集工具和Hive/HBase数据库,构建了完整的用户行为分析解决方案。研究重点围绕用户行为数据的采集、存储和分析展开,通过计算用户购买向量、商品相似度矩阵等关键指标,实现商品智能推荐功能。系统测试结果表明,该方案能有效处理电商平台的海量用户行为数据,为用户提供精准的商品推荐服务,具有较好的实用价值和扩展性。

毕业作品网站 8555

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

基于hadoop的气象数据可视化分析

也提供了气象数据的查询方式,如查询当天气象情况,当月情况,当年情况等。1)利用一些气象数据网站提供的API在线获取信息,将这些信息保存到Hbase.每天定时更新,方便快捷,便于城市气象数据的实时获取与维护。(2)分析全国各城市每个月的气象情况,如:当月平均气象,最高气象,最高风速情况等。提供选择指定城市,展现选定时间范围内气象情况的走势情况,展现形式为折线图。提供选择时间范围,选择分析数据方式,如:客户端分析,Hive分析等功能。2)将待上传的数据文件进行信息提取(气象,风速,云量,气象总体概况等)。

毕业作品网站 1万+

基于Hadoop的地震数据分析统计

源码下载地址:http://download.youkuaiyun.com/detail/huhui_bj/5645641 opencsv下载地址:http://download.youkuaiyun.com/detail/huhui_bj/5645661 地震数据下载地址:http://download.youkuaiyun.com/detail/huhui_bj/5645685 1 项目说明 本文实现的是用Hadoop的

Huhui's Blog 8111

Hadoop源代码分析【1-5】

写在前面: 博主是一名大数据的初学者,昵称来源于《爱丽丝梦游仙境》中的Alice和自己的昵称。作为一名互联网小白,写博客一方面是为了记录自己的学习历程,一方面是希望能够帮助到很多和自己一样处于起步阶段的萌新。由于水平有限,博客中难免会有一些错误,有纰漏之处恳请各位大佬不吝赐教!个人小站:http://alices.ibilibili.xyz/ , 博客主页:https://alice.blog.youkuaiyun.com/ 尽管当前水平可能不及各位大佬,但我还是希望自己能够做得更好,因为一天的生活就是一生的缩影。.

大数据梦想家 3697
上一篇: hadoop namenode
下一篇: Class.asSubclass浅谈
heipacker
博客等级 码龄17年 9粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值