HDFS

浅析HDFS架构和设计

别等时光非礼了梦想. 提交于 2020-11-30 07:45:56
作者 | 大尊 hdfs是hadoop的分布式文件系统,即Hadoop Distributed Filesystem。下面主要讲下HDFS设计中的比较重要的点,使读者能通过简短的文章一窥HDFS的全貌,适合对HDFS有一点了解,但是对HDFS又感到困惑的初学者。本文主要参考的是hadoop 3.0的官方文档。 链接: http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html 当数据集的大小超过了一台物理机所能存储的能力时,就需要将它进行分区并存储到若干不同的独立的计算机上,其中管理跨多台计算机存储的文件系统称为分布式文件系统。 目录 使用HDFS的场景 HDFS的工作模式 文件系统命名空间(namespace) 数据复制 文件系统元数据的持久化 通讯协议 健壮性 数据组织 可访问性 存储空间回收 1、使用HDFS的场景 HDFS适合于以流式数据访问模式来存储超大的文件。即一次写入,多次读取,在数据集上长时间进行各种分析,每次分析都涉及该数据集数据的大部分甚至全部,对于超大文件,hadoop目前以支持存储PB级数据。 HDFS并不适合要求低时间延迟数据访问的应用,因为HDFS是为高数据吞吐量应用而优化的,这就有可能以时间延迟大为代价。

浅析HDFS分布式存储有哪些优势特点

依然范特西╮ 提交于 2020-11-30 07:25:09
浅析HDFS分布式存储有哪些优势特点 近年,随着区块链、大数据等技术的推动,全球数据量正在无限制地扩展和增加。分布式存储的兴起与互联网的发展密不可分,互联网公司由于其大数据、轻资产的特点,通常使用大规模分布式存储系统。 那么分布式存储的种类有哪些呢? 分布式存储包含的种类繁多,除了传统意义上的分布式文件系统、分布式块存储和分布式对象存储外,还包括分布式数据库和分布式缓存等,但其中架构无外乎于三种: A、中间控制节点架构 - 以 HDFS 为代表的架构是典型的代表 B、完全无中心架构 – 计算模式,以 Ceph 为代表的架构是其典型的代表 C、完全无中心架构 – 一致性哈希,以 swift 为代表的架构是其典型的代表 这里我们主要HDFS有哪些优势 HDFS(Hadoop Distributed File System)是hadoop项目的核心子项目,是分布式计算中数据存储管理的基础。是基于流数据模式访问和处理超大文件的需求而开发的, 可以运行于廉价的商用服务器上。 它所具有的高容错、 高可靠性、 高可扩展性、 高获得性、 高吞吐率等特征为海量数据提供了不怕故障的存储, 为超大数据集(Large Data Set) 的应用处理带来了很多便利。 HDFS是开源的,存储着Hadoop应用将要处理的数据,类似于普通的Unix和linux文件系统

Hive基本原理及配置Mysql作为Hive的默认数据库

时间秒杀一切 提交于 2020-11-30 05:19:36
Hive是什么? Hive是基于Hadoop之上的数据仓库; Hive是一种可以存储、查询、分析存储在hadoop中的大规模数据 Hive定义了简单的类SQL查询语言,成为HQL,它允许熟悉SQL的用户查询数据 允许熟悉 MapReduce开发者的开发自定义的mapper和reducer来处理内建的mapper和reducer无法完成的复杂的分析工作 Hive没有专门的数据格式 Hive:数据仓库。 Hive:解释器,编译器,优化器等。 Hive运行时,元数据存储在关系型数据库里面。 1. 为什么选择 Hive 基于 Hadoop的大数据的计算/扩展能力 支持 SQL like查询语言 统一的元数据管理 简单编程 2.Hive内部是什么 Hive是建立在Hadoop上的数据仓库基础架构。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。Hive定义了简单的类SQL查询语言,称为QL,它允许熟悉SQL的用户查询数据。同时,这个语言也允许熟悉MapReduce开发者的开发自定义的mapper和reducer来处理内建的mapper和reducer无法完成的复杂的分析工作。 本质上讲, Hive是一个SQL解析引擎,Hive可以把SQL查询转换为MapReduce中的job来运行。Hive有一套映射工具

ETL DAG调度策略

房东的猫 提交于 2020-11-30 02:31:24
1.目前etl的fetch task策略是基于任务子孙任务数和任务优先级获得task list 2.然后遍历task list 查看任务是否具备执行条件 集群资源校验(yarn/hdfs)<如果这里有性能瓶颈,可以抽出来做公共接口map,每10s更新一次> 数据是否准备好(仅mysql task具备),解决主从延迟问题 任务开始时间 任务的父任务是否都执行成功 3.每10s fetch一次task,遍历一次基于<2>的逻辑 我们把任务的父任务执行状态判断放到最后是想降低数据库查询成本(如果没放到最后,可以在exec_log表中维护一个依赖是否校验的状态去动态变更来减少数据库轮训查找成本) 我们如何避免,如 a->b->c 依赖关系,a还没完成又去校验b,b又没通过,又去校验c这种情况呢(如果此树较大,我们又是基于子孙任务数排序的话,会出现这种无谓遍历数据库的情况)。如果我们没有维护全局树及树中各任务的状态的话(成本较高,要时刻保证内存中的树与mysql表的任务状态同步)。 我们可以这么做(较少数据库的无谓遍历),在任务初始化时把任务依赖的dag加载的map中,并只维护任务与其一级子任务的关系如(<1,[2,3,4]> 父任务id:1,子任务id:2,3,4),然后在任务a校验没通过时,把a的一级子任务加入到list(此处不能放入set中,以为不能使用去重的集合

实时数据仓及实时平台架构详解

泄露秘密 提交于 2020-11-29 00:43:06
随着互联网的发展进入下半场,数据的时效性对企业的精细化运营越来越重要, 商场如战场,在每天产生的海量数据中,如何能实时有效的挖掘出有价值的信息, 对企业的决策运营策略调整有很大帮助。此外,随着 5G 技术的成熟、广泛应用, 对于工业互联网、物联网等数据时效性要求非常高的行业,企业就更需要一套完整成熟的实时数据体系来提高自身的行业竞争力。 本文从上述现状及实时数据需求出发,结合工业界案例、笔者的实时数据开发经验, 梳理总结了实时数据体系建设的总体方案,本文主要分为三个部分: 第一部分主要介绍了当下在工业界比较火热的实时计算引擎 Flink 在实时数据体系建设过程中主要的应用场景及对应解决方案; 第二部分从实时数据体系架构、实时数据模型分层、实时数据体系建设方式、流批一体实时数据架构发展等四个方面思考了实时数据体系的建设方案; 第三部分则以一个具体案例介绍如何使用 Flink SQL 完成实时数据统计类需求。 一、Flink 实时应用场景 目前看来,Flink 在实时计算领域内的主要应用场景主要可分为四类场景, 分别是实时数据同步、流式 ETL、实时数据分析和复杂事件处理,具体的业务场景和对应的解决方案可详细研究下图, 文字层面不再详述。 二、实时数据体系架构 实时数据体系大致分为三类场景:流量类、业务类和特征类,这三种场景各有不同。 在数据模型上,流量类是扁平化的宽表

Kettle构建Hadoop ETL实践(九):事实表技术

僤鯓⒐⒋嵵緔 提交于 2020-11-28 13:31:42
目录 一、事实表概述 二、周期快照 1. 修改数据仓库模式 2. 创建快照表数据装载Kettle转换 三、累计快照 1. 修改数据库模式 2. 修改增量抽取销售订单表的Kettle转换 3. 修改定期装载销售订单事实表的Kettle转换 4. 修改定期装载Kettle作业 5. 测试 四、无事实的事实表 1. 建立新产品发布的无事实事实表 2. 初始装载无事实事实表 3. 修改定期装载Kettle作业 4. 测试定期装载作业 五、迟到的事实 1. 修改数据仓库模式 2. 修改定期装载Kettle转换 3. 修改装载月销售周期快照事实表的作业 4. 测试 六、累积度量 1. 修改模式 2. 初始装载 3. 定期装载 4. 测试定期装载 5. 查询 七、小结 上两篇里介绍了几种基本的维度表技术,并用示例演示了每种技术的实现过程。本篇说明多维数据仓库中常见的事实表技术。我们将讲述五种基本事实表扩展,分别是周期快照、累积快照、无事实的事实表、迟到的事实和累积度量。和讨论维度表一样,也会从概念开始认识这些技术,继而给出常见的使用场景,最后以销售订单数据仓库为例,给出Kettle实现的作业、转换和测试过程。 一、事实表概述 发生在业务系统中的操作型事务,其所产生的可度量数值,存储在事实表中。从最细节粒度级别看,事实表和操作型事务表的数据有一一对应的关系。因此

在local模式下的spark程序打包到集群上运行

萝らか妹 提交于 2020-11-28 08:26:38
一、前期准备   前期的环境准备,在Linux系统下要有Hadoop系统,spark伪分布式或者分布式,具体的教程可以查阅我的这两篇博客: Hadoop2.0伪分布式平台环境搭建 Spark2.4.0伪分布式环境搭建   然后在spark伪分布式的环境下必须出现如下八个节点才算spark环境搭建好。      然后再在本地windows系统下有一个简单的词频统计程序。 import org.apache.spark.SparkConf import org.apache.spark.SparkContext import org.apache.spark.rdd.RDD object ScalaSparkDemo { def main(args: Array[String]) { /** * 第一步:创建Spark的配置对象SparkConf,设置Spark程序的运行时的配置信息, * 例如说通过setMaster来设置程序要连接的Spark集群的Master的URL, * 如果设置为local,则代表Spark程序在本地运行,特别适合于机器配置条件非常差 * (例如只有1G的内存)的初学者 */ val conf = new SparkConf() //创建SparkConf对象,由于全局只有一个SparkConf所以不需要工厂方法 conf.setAppName("wow,my

hive之SQL

眉间皱痕 提交于 2020-11-27 04:55:41
提示:查看学习SQL主要通过官网 输入hive.apache.org进入hive的官网。 点击Hive Wiki 进入一个界面选择DDL或者DML选择你需要的进行语法查询 一)、DDL:CREATE/DROP/ALTER/MSCK/SHOW/DESCRIBE CREATE (DATABASE|SCHEMA 2选一 ) [IF NOT EXISTS 可有可无 ] database_name( 必须存在 ) [COMMENT database_comment] [LOCATION hdfs_path] ) [WITH DBPROPERTIES (property_name=property_value, ...)]; 1.CREATE DATABASE hive; 创建一个database 名字叫hive 提问:hive这个库建立起来以后存在于哪里?如何查看? 答:desc database hive; 查看hive的默认目录 hdfs://hadoop001:9000/user/hive/warehouse/hive.db hdfs://hadoop001:9000: HDFS目录 /user/hive/warehouse/ :默认的hive存储在HDFS上的目录 hive.metastore.warehouse.dir hive的元数据metastorede

大数据高端班划重点 hadoop常用四大模块文件

你说的曾经没有我的故事 提交于 2020-11-26 09:34:29
1.core-site.xml(工具模块)。包括Hadoop常用的工具类,由原来的Hadoopcore部分更名… 1.core-site.xml(工具模块)。包括Hadoop常用的工具类,由原来的Hadoopcore部分更名而来。主要包括系统配置工具Configuration、远程过程调用RPC、序列化机制和Hadoop抽象文件系统FileSystem等。它们为在通用硬件上搭建云计算环境提供基本的服务,并为运行在该平台上的软件开发提供了所需的API。 2.hdfs-site.xml(数据存储模块)。分布式文件系统,提供对应用程序数据的高吞吐量,高伸缩性,高容错性的访问。为Hadoop体系中数据存储管理的基础。它是一个高度容错的系统,能检测和应对硬件故障,用于在低成本的通用硬件上运行。HDFS简化了文件的一致性模型,通过流式数据访问,提供高吞吐量应用程序数据访问功能,适合带有大型数据集的应用程序。 namenode+ datanode + secondarynode 划重点:通过系统实训成为一名起薪保底6K的大数据工程师。通过高效系统的学习路线、紧贴市场需求的技能图谱、紧密及时的答疑辅导,能够帮助学员最快入门、精通掌握技术语言,经过系统的实训顺利毕业并推荐到名企就业,实现人生转型。在这里相信有许多想要学习大数据的同学,大家可以+下大数据学习裙:957205962

Ubuntu18.04下hadoop2.10安装详细步骤(亲测有效,可供参考)

岁酱吖の 提交于 2020-11-25 11:49:55
** 安装详细步骤 ** 首先给出安装过程需要用到的安装包: 云盘连接 提取码:rfxs 解压过后里面有四个文件: 下面给出详细安装步骤,博主是在虚拟机(Ubuntn18.04)上安装的, 注意:需要将文中的xxx换成自己的目录即可。 一、首先需要安装jdk环境: 1、更新Ubuntu源 sudo apt-get update 2、将JDK压缩包(jdk-8u251-linux-x64.tar.gz)解压到Ubuntu系统中 /usr/local/ 中 sudo tar -zxvf jdk-8u251-linux-x64.tar.gz -C /usr/local/ 3、将解压的文件夹重命名为 jdk8 cd /usr/local/ sudo mv jdk1.8.0_251/ jdk8 4、添加到环境变量 cd /home/xxx/ sudo gedit .bashrc 在文件末尾添加如下内容: export JAVA_HOME=/usr/local/jdk8 export JRE_HOME=$JAVA_HOME/jre export CLASSPATH=. : $JAVA_HOME/ lib : $JRE_HOME/lib export PATH=. : $JAVA_HOME/ bin : $PATH source .bashrc 验证是否安装成功 java -version