当前位置:   article > 正文

spring cloud 分布式Hadoop三部曲之HDFS_springcloud hdfs

springcloud hdfs

准备:之前我们已经部署好hadoop相关,对应的hdfs服务启动

背景:引入HDFS为后续的HBase以及Hive做准备,3部曲就绪,整体作为Hadoop核心架构体系,千万数据也是秒级!!!

1. 海量数据(日志等等)无法做到3秒内查询

2. ETL百万数据需要3小时+来迁移

3. 海量计算,我们目前都不是实时,而是先计算好(需要计算6小时的),之后再迁移数据

为了解决这些 问题就需要hadoop框架,那么这次就跟随我一起搭建hadoop框架吧。

简介:hdfs作为分布式文件系统是指,设计成适合运行在通用硬件上的分布式z文件系统。(HDFS是一个高度容错性的系统,适合部署在廉价的机器上)。HDFS能提供高吞吐量访问应用程序数据,非常适合大规模数据集上的应用。HDFS放宽了一部分POSIX约束,这样就使得可以用流的形式来访问,文件系统中的数据

hdfs是主从结构,一个HDFS集群有一个名字节点,它是一个管理文件命名空间和调节客户端访问文件的主服务器。HDFS对外开放文件命名空间并允许用户数据以文件形式存储。

内部机制是将一个文件分割成一个或多个块,这些块被存储在一组数据节点中。名字节点用来操作文件命名空间的文件或目录操作,如打开,关闭,重命名等等。它同时确定块与数据节点的映射。数据节点负责来自文件系统客户的读写请求。数据节点同时还要执行块的创建,删除,和来自名字节点的块复制指令。

HDFS原理:

block:HDFS中存储单元是每个数据块block,HDFS默认的最基本的存储单位是64M的数据块。

nameNode:元数据节点。该节点用来管理文件系统中的命名空间。负责元数据管理,与client交互进行提供元数据查询,分配数据存储节点等。就说,一个文件包含哪些数据块,分布在哪些节点上。

dataNode:是HDFS真正存储数据的地方。客户端client和元数据节点nameNode可以向数据节点请求写入或者读出数据块。datNode需要周期性的向元数据节点回报期存储的数据块信息。

secondary NameNode:从元数据节点。周期性将nameNode中的namespaceimage和edit log合并,防止log文件过大。

1.读取过程

    FileSystem对象通过RPC调用nameNode,确定文件的开头部分的块位置。对于每一块,nameNode返回,具有该块副本的

dataNode地址。这些dataNode根据他们与client的距离来排序(网络集群拓扑)。

实战效果

首先我们在pom中引入对应的包

  1. <!--引入hadoop-client Jar包 -->
  2. <dependency>
  3. <groupId>org.apache.hadoop</groupId>
  4. <artifactId>hadoop-client</artifactId>
  5. <version>3.3.0</version>
  6. </dependency>
  7. <!-- 引入hadoop-common Jar包 -->
  8. <dependency>
  9. <groupId>org.apache.hadoop</groupId>
  10. <artifactId>hadoop-common</artifactId>
  11. <version>3.3.0</version>
  12. </dependency>
  13. <!-- 引入hadoop-hdfs Jar包 -->
  14. <dependency>
  15. <groupId>org.apache.hadoop</groupId>
  16. <artifactId>hadoop-hdfs</artifactId>
  17. <version>3.3.0</version>
  18. </dependency>

然后,在yml文件中,设置节点

  1. hdfs:
  2. path: hdfs://192.168.100.6
  3. username: root

 

实例

  1. /**
  2. * 获取HDFS文件系统对象
  3. *
  4. * @return
  5. * @throws Exception
  6. */
  7. private FileSystem getFileSystem() throws Exception {
  8. FileSystem fileSystem = FileSystem.get(new URI(hdfsPath), getConfiguration(), hdfsName);
  9. return fileSystem;
  10. }
  11. // 在hdfs中创建文件夹
  12. boolean isOk = fs.mkdirs(srcPath);

 

 

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/388807
推荐阅读
相关标签
  

闽ICP备14008679号