大数据概览

今夕何年 · 语雀
ETL数据仓库技术:Extract-Transform-Load

ETL工具(sqoop,DataX,Kettle,canal,StreamSets)

ETL,是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程,是数据仓库的生命线。

抽取(Extract)主要是针对各个业务系统及不同服务器的分散数据,充分理解数据定义后,规划需要的数据源及数据定义,制定可操作的数据源,制定增量抽取和缓慢渐变的规则。

转换(transform)主要是针对数据仓库建立的模型,通过一系列的转换来实现将数据从业务模型到分析模型,通过ETL工具可视化拖拽操作可以直接使用标准的内置代码片段功能、自定义脚本、函数、存储过程以及其他的扩展方式,实现了各种复杂的转换,并且支持自动分析日志,清楚的监控数据转换的状态并优化分析模型。

装载(Load)主要是将经过转换的数据装载到数据仓库里面,可以通过直连数据库的方式来进行数据装载,可以充分体现高效性。在应用的时候可以随时调整数据抽取工作的运行方式,可以灵活的集成到其他管理系统中。


------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------    

hbase安装: 
hbase安装时候需要注意hbase.rootdir 这个参数需要和hadoop的端口地址保持一致

https://mirrors.pku.edu.cn/apache/

https://juejin.cn/post/7091922109303095304
https://blog.csdn.net/pengjunlee/article/details/106222040
https://www.jianshu.com/p/a4fecea8db63


TiDB 是分布式关系型数据库。

时序数据库可以考虑 InfluxDB、 TimescaleDB 等等。

如果只是为了应用在例如监控场景下,TiDB也是可以的,案例:
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------    

大数据发展:
    https://zhuanlan.zhihu.com/p/53243971
    https://cloud.tencent.com/developer/article/1892296

dataware house:数据仓库
    https://juejin.cn/post/6969874734355841031

Flink集成第三方框架doc:
    https://nightlies.apache.org/flink/flink-docs-release-1.15/zh/docs/connectors/datastream/kafka/
    https://bahir.apache.org/docs/flink/current/flink-streaming-redis/


activiti使用 使用Java集成:
    
Sqoop 使用


如何将Hive数据同步到Kudu

大数据:::
1.Druid:是一个实时处理时序数据的OLAP数据库,因为它的索引首先按照时间分片,查询的时候也是按照时间线去路由索引。

2.Kylin:核心是Cube,Cube是一种预计算技术,基本思路是预先对数据作多维索引,查询时只扫描索引而不访问原始数据从而提速。

3.Presto:它没有使用Mapreduce,大部分场景下比HIVE块一个数量级,其中的关键是所有的处理都在内存中完成。

4.Impala:基于内存计算,速度快,支持的数据源没有Presto多。

5.SparkSQL:是spark用来处理结构化的一个模块,它提供一个抽象的数据集DataFrame,并且是作为分布式SQL查询引擎的应用。它还可以实现Hive on Spark,hive里的数据用sparksql查询。

6.clickhouse:一个高达版的Mpp架构系统,比druid自由,比presto快,基本满足即席查询引擎的所有要求。

7.框架选型:(1)从超大数据的查询效率来看:

ClickHouse>Druid>Kylin>Presto>SparkSQL

(2)从支持的数据源种类来讲:

Presto>SparkSQL>Kylin>Druid


Kudu相比Hbase有何优势,为什么?
Kudu在某些特性上和Hbase很相似,难免会放在一起比较。然而Kudu和Hbase有如下两点本质不同。

Kudu的数据模型更像是传统的关系型数据库,Hbase是完全的no-sql设计,一切皆是字节。
Kudu的磁盘存储模型是真正的列式存储,Kudu的存储结构设计和Hbase区别很大。
综合而言,纯粹的OLTP请求比较适合Hbase,OLTP与OLAP结合的请求适合Kudu。

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------    

大数据生态圈归总:
    数据源:文档,视频,日志文件,JSON文件,MySQL数据库中的数据,HDFS中的数据之类的
    数据采集/传输:Sqoop可以将RDBMS数据导入HDFS中,Flume日志采用框架,logstash 框架处理日志的工具;
    数据存储:HDFS,Hbase,ES,类似于OLAP中的一些数据存储框架ClickHouse等等,有的是依赖HDFS,有的是不需要抵赖HDFS的,ClickHouse,Doris, 最近的startRocks    
    数据处理/流处理/批处理:Spark Streaming,Storm,Flink
    数据查询/封装SQL查询HDFS: Impala,Hive,SparkSQL,  预处理 Druid,Kylin,
    资源管理:Yarn
    配置管理:Zookeeper
    消息队列:Kafka
    数据展示:Echarts,Superset
    大数据框架安装:CDH 平台
    
    Sqoop(发音:skup)是一款开源的工具,主要用于在HADOOP(Hive)与传统的数据库(mysql、postgresql...)间进行数据的传递,
    可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。
    
    
BI:商业智能,海量数据导入分布式存储当中,然后使用大数据的工具进行分析,为领导层决策提供依据


------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------    


Superset: 是一款轻量级的BI工具,由Airbnb的数据部门开源。整个项目基于Python框架,不是Python我也不会推荐了,它集成了Flask、D3、Pandas、SqlAlchemy等。

Phoenix:相当于一个Java中间件,帮助开发工程师能够像使用JDBC访问关系型数据库一样访问NoSQL数据库HBase。
         将 SQL 查询编译为 HBase 扫描,确定扫描 Rowkey 的最佳开始和结束位置,扫描并行执行,将 where 子句推送到服务器端的过滤器,
         通过协处理器进行聚合操作,完美支持 HBase 二级索引创建,DML命令以及通过DDL命令创建和操作表和版本化增量更改。

datax和canal对比:
    DataX 是阿里巴巴开源的离线数据同步工具/平台,内置实现了包括 MySQL、Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase、
            TableStore(OTS)、MaxCompute(ODPS)、DRDS 等各种异构数据源之间高效的数据同步功能。

    canal译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。
    
    从上面两段描述,我们可以了解到二者在使用场景上的区别,虽然都是数据传输工具,但datax主要是离线的场景,而canal是实时的场景。

Kettle与DataX的比较:
    1)Kettle拥有自己的管理控制台,可以直接在客户端进行etl任务制定,不过是CS架构,而不支持BS浏览器模式。DataX并没有界面,界面完全需要自己开发,增加了很大工作量。
    2)Kettle可以与我们自己的工程进行集成,通过JAVA代码集成即可,可以在java中调用kettle的转换、执行、结束等动作,这个还是有意义的,
        而DataX是不支持的,DataX是以执行脚本的方式运行任务的,当然完全吃透源码的情况下,应该也是可以调用的。
    3)支持的数据库,都支持的比较齐全,kettle支持的应该更多,DataX是阿里开发,可以更好地支持阿里自身的数据库系列,如ODPS、ADS等
    4)Kettle已经加入BI组织Pentaho,加入后kettle的开发粒度和被关注度更进一步提升
    5)DataX开源的支持粒度不高,关注度远没有kettle高,代码提交次数更是少的很。
    
            https://www.cnblogs.com/bayu/articles/13335917.html

Kettle 简介:
    ETL(Extract-Transform-Load 的缩写,即数据抽取、转换、装载的过程),对于数据开发人员来说,我们经常会遇到各种数据的处理,转换,迁移,
    所以了解并掌握一种 ETL 工具的使用,必不可少,这里我们要学习的 ETL 工具就是 Kettle。
    
    Kettle 是一款国外开源的 ETL 工具,对商业用户也没有限制,纯 Java 编写,可以在 Window、Linux、Unix 上运行,绿色无需安装,数据抽取高效稳定。
    Kettle 中文名称叫水壶,它允许管理来自不同数据库的数据,把各种数据放到一个壶里,然后以一种指定的格式流出。Kettle 中有两种脚本文件,
    Transformation 和 Job, Transformation 完成针对数据的基础转换,Job 则完成整个工作流的控制。通过图形界面设计实现做什么业务,并在 Job 下的 start 模块,
    有一个定时功能,可以每日,每周等方式进行定时。


Talend 是什么:
        Talend,中文名拓蓝,是一家专业的开源集成软件公司,它是提供数据集成、数据分析以及数据清洗、主数据管理、应用集成为一体的软件提供商。
        Talend连续四年上榜Gartner在数据集成领域的年度魔力象限报告,同时上榜的有全球IT巨头IBM、Oracle、SAP等等,Talend是其中唯一一家开源公司。

        Talend Open Studio是其旗下的一种ETL工具,一般简称为Talend,可以简化数据处理流程,降低入门门槛,不需要掌握专业的ETL知识,
        仅仅通过Web界面和简单的组件拖拽就可实现数据处理。

    Talend 特性
        数据源:各种常用数据库(mysql oracle hive),文件等。
        速度:需要手工调整,对特定数据源有优化。
        部署:创建java或perl文件,并通过操作系统调度工具来运行。
        易用性:有GUI图形界面,但是以Eclipse的插件方式提供

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------    

任务调度:
主流大数据调度工具对比 DolphinScheduler Azkaban Airflow Oozie Xxl-job:
    DolphinScheduler:    解决数据处理流程中错综复杂的依赖关系,         支持传统的shell任务,同时支持大数据平台任务调度:MR、Spark、SQL(mysql、postgresql、hive/sparksql)、python、procedure、sub_process
    Xxl-job:            一个轻量级分布式的任务调度框架                Java
    Azkaban:            为了解决Hadoop的任务依赖关系问题            Command、HadoopShell、Java、HadoopJava、Pig、Hive等,支持插件式扩展
    Airflow:            通用的批量数据处理                            Python、Bash、HTTP、Mysql等,支持Operator的自定义扩展。
    Oozie:                管理Hdoop作业(job)的工作流程调度管理系统    统一调度hadoop系统中常见的mr任务启动、Java MR、Streaming MR、Pig、Hive、Sqoop、Spark、Shell等
         
非常推荐Apache DolphinScheduler        —— 调度选的好,下班回家早;调度选的对,半夜安心睡;
Apache DolphinScheduler是一个分布式去中心化,易扩展的可视化DAG工作流任务调度系统。
致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用,目前已累计有 **400+** 公司在生产上使用。
    https://blog.csdn.net/qq_32613771/article/details/112400682


Azkaban:
  是linkin的开源项目,开发语言为Java。
    Azkaban是一套简单的任务调度服务,整体包括三部分webserver、dbserver、executorserver。
  Azkaban是由Linkedin开源的一个批量工作流任务调度器。用于在一个工作流内以一个特定的顺序运行一组工作和流程。
  Azkaban定义了一种KV文件格式来建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------    

Debezium: 
    Debezium是一个开源项目,为捕获数据更改(change data capture,CDC)提供了一个低延迟的流式处理平台。你可以安装并且配置Debezium去监控你的数据库,
    然后你的应用就可以消费对数据库的每一个行级别(row-level)的更改。只有已提交的更改才是可见的,所以你的应用不用担心事务(transaction)或者更改被回滚(roll back)。
            https://loujitao.github.io/Debezium%E7%AE%80%E4%BB%8B-%E4%B8%80/


MaxWell:
    Maxwell 是一个能实时读取 MySQL 二进制日志文件binlog,并生成 Json格式的消息,作为生产者发送给 Kafka、Kinesis、RabbitMQ、Redis、Google Cloud Pub/Sub、
    文件或其它平台的应用程序。它的常见应用场景有ETL、维护缓存、收集表级别的 DML 指标、增量到搜索引擎、数据分区迁移、切库binlog回滚方案等。
    
    Maxwell工作原理与Canal工作原理一样,都是把自己伪装成MySQL 的slave从库,同步binlog数据,来达到同步MySQL数据,与Canal相比,更加轻量。
    同样使用Maxwell也需要开启MySQL binlog日志。

StreamX:
     StreamX 项目的初衷是 让 Flink 开发更简单, 使用 StreamX 开发, 可以极大降低学习成本和开发门槛, 让开发者只用关心最核心的业务, 
     StreamX 规范了项目的配置, 鼓励函数式编程, 定义了最佳的编程方式, 提供了一系列开箱即用的 Connectors, 标准化了配置、开发、测试、部署、监控、
     运维的整个过程, 提供 scala 和 java 两套 api, 其最终目的是打造一个一站式大数据平台, 流批一体, 湖仓一体的解决方案。
     
        https://xie.infoq.cn/article/659b701f4d78c01bca4bdd13e
        https://blog.csdn.net/yang_shibiao/article/details/124417890
    

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------    

常见的数据湖概念:
    一、Delta、Hudi、Iceberg对比概览

    由于Apache Spark在商业化上取得巨大成功,所以由其背后商业公司Databricks推出的Delta lake也显得格外亮眼。在没有delta数据湖之前,
    Databricks的客户一般会采用经典的lambda架构来构建他们的流批处理场景。
    
    Apache Hudi是由Uber的工程师为满足其内部数据分析的需求而设计的数据湖项目,它提供的fast upsert/delete以及compaction等功能
    可以说是精准命中广大人民群众的痛点,加上项目各成员积极地社区建设,包括技术细节分享、国内社区推广等等,也在逐步地吸引潜在用户的目光。
    
    Netflix的数据湖原先是借助Hive来构建,但发现Hive在设计上的诸多缺陷之后,开始转为自研Iceberg,并最终演化成Apache下一个高度抽象通用的开源数据湖方案。
    Apache Iceberg目前看则会显得相对平庸一些,简单说社区关注度暂时比不上delta,功能也不如Hudi丰富,但却是一个野心勃勃的项目,
    因为它具有高度抽象和非常优雅的设计,为成为一个通用的数据湖方案奠定了良好基础。

    
    三个引擎的初衷场景并不完全相同,Hudi 为了 incremental 的 upserts,Iceberg 定位于高性能的分析与可靠的数据管理,Delta 定位于流批一体的数据处理。
    这种场景的不同也造成了三者在设计上的差别。尤其是 Hudi,其设计与另外两个相比差别更为明显。 因此后面是趋同还筑起各自专长优势壁垒未可知。
      
    Delta、Hudi、Iceberg三个开源项目中,Delta和Hudi跟Spark的代码深度绑定,尤其是写入路径。这两个项目设计之初,都基本上把Spark作为他们的默认计算引擎了。
    而Apache Iceberg的方向非常坚定,宗旨就是要做一个通用化设计的Table Format。它完美的解耦了计算引擎和底下的存储系统,便于多样化计算引擎和文件格式,
    很好的完成了数据湖架构中的Table Format这一层的实现,因此也更容易 成为Table Format层的开源事实标准。
    
    另一方面,Apache Iceberg也在朝着流批一体的数据存储层发展,manifest和snapshot的设计,有效地隔离不同transaction的变更 ,非常方便批处理和增量计算。
    并且,Apache Flink已经是一个流批一体的计算引擎,二都可以完美匹配,合力打造流批一体的数据湖架构。
      
    最后,Apache Iceberg这个项目背后的社区资源非常丰富。在国外,Netflix、Apple、Linkedin、Adobe等公司都有PB级别的生产数据运行在Apache Iceberg上;
    在国内,腾讯这样的巨头也有非常庞大的数据跑在Apache Iceberg之上,最大的业务每天有几十T的增量数据写入。社区成员同样非常资源和多样化,
    拥有来自其他项目的7位ApachePMC , 1为VP。体现在代码和设计的review上,就变得非常苛刻,一个稍微大一点的PR涉及100+的comment很常见。
    这些都使得Apache Iceberg的设计+代码质量比较高。
    
    Apache Iceberg 0.10.0 版本的发布,已经拉开集成 Flink 和 Iceberg 的序幕。基于以上,个人比较推荐选择Apache Iceberg,并且建议和Apark Flink搭配。
    
    https://www.cnblogs.com/xuzhujack/p/15771027.html
    

什么是数据湖:
    解释一:
        数据湖是一类存储数据自然/原始格式的系统或存储,通常是对象块或者文件。数据湖通常是企业中全量数据的单一存储。
        全量数据包括原始系统所产生的原始数据拷贝以及为了各类任务而产生的转换数据,各类任务包括报表、可视化、高级分析和机器学习。
        数据湖中包括来自于关系型数据库中的结构化数据(行和列)、半结构化数据(如CSV、日志、XML、JSON)、非结构化数据(如email、文档、PDF等)
        和二进制数据(如图像、音频、视频)。数据沼泽是一种退化的、缺乏管理的数据湖,数据沼泽对于用户来说要么是不可访问的要么就是无法提供足够的价值。

    解释二:
        数据湖是一个集中式存储库,允许您以任意规模存储所有结构化和非结构化数据。您可以按原样存储数据(无需先对数据进行结构化处理),
        并运行不同类型的分析 – 从控制面板和可视化到大数据处理、实时分析和机器学习,以指导做出更好的决策。
    
    
    关于数据湖的定义其实很多,但是基本上都围绕着以下几个特性展开:
        1、 数据湖需要提供足够用的数据存储能力,这个存储保存了一个企业/组织中的所有数据。

        2、 数据湖可以存储海量的任意类型的数据,包括结构化、半结构化和非结构化数据。

        3、 数据湖中的数据是原始数据,是业务数据的完整副本。数据湖中的数据保持了他们在业务系统中原来的样子。

        4、 数据湖需要具备完善的数据管理能力(完善的元数据),可以管理各类数据相关的要素,包括数据源、数据格式、连接信息、数据schema、权限管理等。

        5、 数据湖需要具备多样化的分析能力,包括但不限于批处理、流式计算、交互式分析以及机器学习;同时,还需要提供一定的任务调度和管理能力。

        6、 数据湖需要具备完善的数据生命周期管理能力。不光需要存储原始数据,还需要能够保存各类分析处理的中间结果,并完整的记录数据的分析处理过程,能帮助用户完整详细追溯任意一条数据的产生过程。

        7、 数据湖需要具备完善的数据获取和数据发布能力。数据湖需要能支撑各种各样的数据源,并能从相关的数据源中获取全量/增量数据;然后规范存储。数据湖能将数据分析处理的结果推送到合适的存储引擎中,满足不同的应用访问需求。

        8、 对于大数据的支持,包括超大规模存储以及可扩展的大规模数据处理能力。
        
        
    综上,个人认为数据湖应该是一种不断演进中、可扩展的大数据存储、处理、分析的基础设施;以数据为导向,实现任意来源、任意速度、任意规模、
    任意类型数据的全量获取、全量存储、多模式处理与全生命周期管理;并通过与各类外部异构数据源的交互集成,支持各类企业级应用。

        https://zhuanlan.zhihu.com/p/145671783
    

        
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------    

    
Atlas简介:
    在当今大数据的应用越来越广泛的情况下,数据治理一直是企业面临的巨大问题。
    大部分公司只是单纯的对数据进行了处理,而数据的血缘,分类等等却很难实现,市场上也急需要一个专注于数据治理的技术框架,这时Atlas应运而生。
    Atlas官网地址:https://atlas.apache.org/        Atlas是Hadoop的数据治理和元数据框架。

    Atlas是一组可扩展和可扩展的核心基础治理服务,使企业能够有效,高效地满足Hadoop中的合规性要求,并允许与整个企业数据生态系统集成。
    Apache Atlas为组织提供了开放的元数据管理和治理功能,以建立其数据资产的目录,对这些资产进行分类和治理,并为数据科学家,
    分析师和数据治理团队提供围绕这些数据资产的协作功能。

    如果想要对这些数据做好管理,光用文字、文档等东西是不够的,必须用图。Atlas就是把元数据变成图的工具。


什么是数据治理?
        目前业界并没有对其概念的统一标准定义,我们可以这么认为,数据治理从本质上看就是对一个机构(企业或政府部门)的数据从收集融合到分析管理和利用进行评估、
        指导和监督(EDM)的过程, 通过提供不断创新的数据服务, 为企业创造价值。

        DGI(Data Governance Institute,数据治理研究所)认为,企业不仅需要管理数据的系统,更需要一个完整的规则系统以及规章流程。
        数据治理基本上涵盖了企业所有与数据有关的内容,因此在整个企业范围内,包括工作流程、涉及人员和使用的技术等等,都需要经过仔细考量,
        以保证数据的可用性、一致性、完整性、合规性、和安全性,确保在整个数据生命周期中,都具有较高的数据质量。

    总体来说,数据治理的目标就是提高数据质量,将数据价值最大化。具体而言,数据治理的任务包括以下几点:
        ● 构筑适配灵活、标准化、模块化的多源异构数据资源接入体系;
        ● 建设规范化、流程化、智能化的数据处理体系;
        ● 打造数据精细化治理体系、组织的数据资源融合分类体系;
        ● 构建统一调度、精准服务、安全可用的信息共享服务体系。


------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------    

    
Ambari简介:
    创建、管理、监视 Hadoop 的集群,但是这里的 Hadoop 是广义,指的是 Hadoop 整个生态圈(例如 Hive,Hbase,Sqoop,Zookeeper 等),而并不仅是特指 Hadoop。
    用一句话来说,Ambari 就是为了让 Hadoop 以及相关的大数据软件更容易使用的一个工具。

    
    
Spark Structured Streaming:
    Apache Spark在2016年的时候启动了Structured Streaming项目,一个基于Spark SQL的全新流计算引擎Structured Streaming,
    让用户像编写批处理程序一样简单地编写高性能的流处理程序。
    
    个人总结:spark Streaming就是对RDD进行批量处理,Structured Streaming就相当于SparkSql一样进行操作,并且更加完善的函数.

HDFS NameNode 是进程级别的:
HDFS在CDH中的搭建一般都是使用高可用搭建的,在CDH中配置HDFS的高可用,找到HDFS配置,设置命名空间,首先设置高可用除了本机之外的别的机器,作为高可用节点,
如果使用高可用就必须用到zookeeper,当出现故障时可以将数据转移到另一台机器,journalNode也需要设置,这个是用来同步HDFS数据的,需要奇数台机器。

YARN是线程级别的:
配置起来,启动比较快

面试问题:
    假设问你:Flink,spark,搭建多少台,如果是运行在YARN上,那么就搭建一台就行,不存在集群的概念。
    

CDH安装Hive是,HiverServer1的端口是9083,HiveServer2的端口是10000,


使用 DataNode 主机名称,打勾表示可以用域名访问
    dfs.client.use.datanode.hostname

HDFS开始虚拟化,将物理机的核数虚拟化
    yarn.nodemanager.resource.cpu-vcores
    一般真实场景下物理核和虚拟核对比值为1:1或1:2,修改配置,每台机器物理核2核虚拟成4核

5.3修改单个容器下最大cpu申请资源
    修改yarn.scheduler.maximum-allocation-vcores参数调整4核(>=4)


5.7 设置容量调度器

内存分配参考:
    比如机器配置128G,32核, 其中108G分配给YARN,预留20G,物理核虚拟化成1:2;
    
    
CDH之Hue的安装并使用hive
介绍:
一, 要想安装Hue,必须先安装oozie


------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------    

大数据学习计划:
    简单学习入门 cdh上运行各种大数据框架包括hive,impala,hue,flink
    
CDH集成的Hive,使用Datagrip连接时,驱动要注意,直接使用cdh里面下载好的standalone的jar就可以了

cdh集群优化:
    https://www.cnblogs.com/ttzzyy/p/13098188.html

如果HDFS无法使用webUI,需要修改配置,将 NameNode 绑定到通配符地址选项打勾,NameNode Deafault Group


cdh上运行spark程序,在安装好spark gateway后,这个gateway就是客户端,就能运行spark了,首先执行spark-shell on yarn 
进行spark命令行,然后开始执行了。执行Spark SQL,例如:
    scala> spark.sql("show tables").show
    scala> spark.sql("select * from test").show


hive执行操作时需要进行配置:
set mapred.job.queue.name=hive;
set mapreduce.job.queuenam=hive;
set mapred.queue.names=hive;


------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------    


Impala与kudu 使用
Impala与Hive 结合Hbase使用
    https://blog.csdn.net/weixin_44583135/article/details/121563594
    
HUE 介绍:
    https://zhuanlan.zhihu.com/p/24111535

impala:羚羊
    是基于Hive并使用内存进行计算,兼顾数据仓库,具有实时,批处理,多并发等优点;
    
    优点:
        基于内存运算,不需要把中间结果写入磁盘,省掉了大量的I/O开销
        无需转换MapReduce,直接访问存储在HDFS,Hbase中的数据进行作业调度,速度快。
        使用了支持Data locality的I/O调度机制,尽可能地将数据和计算分配在同一台机器上进行,减少了网络开销。
        支持各种文件格式,如TEXTFILE,SEQUENCEFILE,RCFile,Parquet。
        可以访问hive的metastore,对hive数据直接做数据分析。
    缺点:
        对内存依赖大,且完全依赖hive。
        实践中,分区超过1万,性能严重下降
        只能读取文本文件,而不能直接读取自定义二进制文件。
        每当新的记录/文件被添加到HDFS中的数据目录时,该表需要被刷新。(需要手动调用命令刷新)

指定文件存储与压缩格式:
    create table student2(id int,name string)
    row format delimited
    fields terminated by '\t'
    stored as PARQUET;

如果按照以往imapla查询查询速度很快,但是不知何时查询速度变得慢了,可以执行
compute stats 表名;

impala优化:
1、尽量将StateStore和Catalog单独部署到同一个节点,保证他们正常通信。
2、通过对Impala Daemon内存限制(默认256M)及StateStore工作线程数,来提高Impala的执行效率。
3、SQL优化,使用之前调用执行计划
4、选择合适的文件格式进行存储,提高查询效率。
5、避免产生很多小文件(如果有其他程序产生的小文件,可以使用中间表,将小文件数据存放到中间表。然后通过insert…select…方式中间表的数据插入到最终表中)
6、使用合适的分区技术,根据分区粒度测算
7、使用compute stats进行表信息搜集,当一个内容表或分区明显变化,重新计算统计相关数据表或分区。因为行和不同值的数量差异可能导致impala选择不同的连接顺序时进行查询。
8、网络io的优化:
    –a.避免把整个数据发送到客户端
    –b.尽可能的做条件过滤
    –c.使用limit字句
    –d.输出文件时,避免使用美化输出
    –e.尽量少用全量元数据的刷新
9、使用profile输出底层信息计划,在做相应环境优化
    

大数据风控:
    https://xiaoyyu.blog.csdn.net/article/details/116769549
    
    
    
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------    

hive命令使用:
hive启动:node1节点,需要启动两个才能使用dg连接到Hive,同时若使用MySQL就需要启动172.31.10.132 服务器
    nohup /export/server/apache-hive-3.1.2/bin/hive --service metastore &
    nohup /export/server/apache-hive-3.1.2/bin/hive --service hiveserver2 >> hiveserver2.out & 

或者使用shell脚本的
    sh hiveservices.sh start
    sh hiveservices.sh status
    sh hiveservices.sh stop
    /export/server/apache-hive-3.1.2/bin/hiveservices.sh start 

    
启动 history server
/export/server/hadoop-3.3.0/sbin/mr-jobhistory-daemon.sh start historyserver
/export/server/hadoop-3.3.0/sbin/mr-jobhistory-daemon.sh stop historyserver

历史服务器计算查询
http://node1:19888/jobhistory

命令行进入hive:23机器执行
    /export/server/apache-hive-3.1.2/bin/hive

hiveserver2客户端连接需要通过beeline:
                /export/server/apache-hive-3.1.2/bin/beeline
进入beeline:    ! connect jdbc:hive2://node1:10000
    

hadoop启动与关闭:
    /export/server/hadoop-3.3.0/sbin/start-all.sh
    /export/server/hadoop-3.3.0/sbin/stop-all.sh
    


将数据存放入hdfs中:
hadoop fs

    
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------    


clickhouse启动
sudo systemctl start clickhouse-server
sudo systemctl restart clickhouse-server
sudo systemctl stop clickhouse-server
sudo systemctl status clickhouse-server

ps -ef|grep clickhouse

clickhouse的数据位置
    cd /var/lib/clickhouse/

查看数据库表数据内容: 查看default数据库下的 t_order_mt2 数据库
    ll /var/lib/clickhouse/data/default/t_order_mt2/

日志路径:
    /var/log/clickhouse-server/

终端进入clickhouse客户端:
    clickhouse-client -m
    
    
    
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------    


学习clikhouse:
    https://www.bilibili.com/video/BV1Yh411z7os?spm_id_from=333.999.0.0&vd_source=428db08b21f2ff111cf86dadf4491265

Flink数仓:
    https://www.bilibili.com/video/BV1Ju411o7f8?spm_id_from=333.788.b_636f6d6d656e74.32&vd_source=428db08b21f2ff111cf86dadf4491265

大数据Flink道路交通实时流量监控:
    https://www.bilibili.com/video/BV1634y1k7Kz?p=45&vd_source=428db08b21f2ff111cf86dadf4491265

实时数仓3.0:
    https://www.bilibili.com/video/BV1TG411a7nL?spm_id_from=333.999.0.0&vd_source=428db08b21f2ff111cf86dadf4491265
    
电商数仓4.0:
    https://www.bilibili.com/video/BV1rL411E7uz?spm_id_from=333.999.0.0&vd_source=428db08b21f2ff111cf86dadf4491265

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------    

各层级  ods    存放原始数据
        dwd    结构与原始表结构保持一致,对ods层数据进行清洗
        dws    以dwd为基础进行轻度汇总
        ads     报表层,为各种统计报表提供数据

    
         
 

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值