从事大数据岗位,个人常用的Apache顶级项目

2021-09-02 11:25:37 浏览数 (1)

导读

年前,个人换了大数据岗位,目前主要从事大数据分析和大数据算法相关工作。在前期数据分析师岗位的基础上,虽然只是增加了一个"大"字作为前缀,但所涉及的技术栈和工作理念其实还是有很大变化的,其中打交道最为频繁的当从一个关键词说起:Apache。

Apache:世界上最大的开源软件基金会

01 关于Apache

Apache是一个成立于1999年的非盈利性组织,其所属软件基金会(ASF:Apache Software Foundation)致力于为开源软件项目(前提是该项目已列入到Apache项目)提供服务和支持,得益于其良好的管理和宏伟的愿景,Apache目前是世界上最大的开源软件基金会组织。当然,Apache软件基金会的资金主要来源于个人和企业的捐助。

以上截图源于Apache官网

从中可以看到这样一组数字:

  • 维护350 个项目和提案
  • 300 顶级项目
  • 管理227M 行代码(2.27亿 )
  • 4.2B 行代码更改(42亿 )
  • 3.9M 代码提交(390万 )
  • 社区参与人数46万
  • ……

作为一名程序员,看到这些以K、M、B(billion)来计数的内容,总是难免心生波澜心存敬畏……更重要的是不仅数量庞大,而且Apache所涉猎领域还众多,按照Apache官网分类有27个子类,我个人日常工作中涉及到的主要是big-data所在分类,所以本文就来简要介绍一下几个常用的Apache顶级项目,大多属于大数据范畴。

02 频繁打交道的几个Apache顶级项目

个人目前从事工作内容包括大数据分析、大数据算法以及部分大数据开发相关,所用到的技术栈主要包括:

1)Hadoop:提起大数据想必人人皆知Hadoop,狭义的讲,hadoop是yarn资源调度 hdfs分布式存储 mapreduce两阶段分布式计算的技术集成;广义的讲,hadoop其实已经代表了以hadoop为核心的一套大数据技术生态,除了hadoop自身,还包括Hbase列式存储、Hive数仓、Spark分布式计算等等。在实际工作中,用到的主要是其hdfs存储和yarn资源调度功能;

2)Hive:大数据的核心是存储和计算,hadoop的hdfs提供了底层的分布式文件存储,而对这些存储映射为结构化数据并提供类SQL查询的组件则是Hive,其与关系型数据库(RDB)在数据方式和查询语法上都较为相近,但同时又有着很多本质上的区别:例如Hive是OLAP(面向主题),记录了大量历史数据,可能存在重复和冗余,主要操作是插入和查询数据;而关系型数据库则是OLTP(面向事务),实时记录了最新数据,一般遵循数据库设计6大范式(至少遵循前3个范式),全面支持增删改查。正因为Hive的HQL语法与常用的SQL语法极为相近,所以学习成本较低,使用起来更容易上手;

3)Spark:Hive提供了一定的数据分析能力,但在执行效率和功能方面都还存有一定短板,所以Spark出于Hive而胜于Hive(Spark的早期版本Shark是基于Hive的)应运而生,由于采用了内存式计算设计,相较于Hadoop中的MapReduce两阶段计算框架而言,有着上百倍的效率提升,更重要的Spark支持4种语言API(Java、Scala、Python和R),对标数据处理阶段涵盖批处理、流处理、机器学习以及图计算,可谓是提供了多语言一站式分布式计算方案,使用起来还是较为方便的;

4)Parquet:parquet实际上只是一种数据存储文件格式,具有较高的压缩比,所以存储体积更为小巧。其标志性特点就是列式存储,读取和存储的parquet文件自带Schema信息,但是要求不能存在列名重复。与txt、csv类的通用文件格式不同,parquet文件可能也算是大数据中的一个标志性文件类型,甚至称的上是文件存储格式的标准;

5)Maven:maven是一个项目构建工具,个人在构建Scala项目中会有所应用。通过Maven构建的Scala项目,其最大的优势在于项目文件目录更为清晰,严格按照src-main/test-scala类的格式建立和管理项目文件,更重要的是通过配置pom文件,可方便的管理项目中的依赖,实现自动下载和导入,使用起来更为简洁方便。

6)Zeppelin:用Python做数据分析的应该都知道Jupyter,与之类似,用Spark做数据EDA的最好工具当属Zeppelin:通过设置不同的解释器路径,可以提供一个多语言的交互式分析环境,包括spark的各语言环境、scala、python以及SQL等,在SQL解释器下还支持简单的数据可视化能力。不过坦白的讲,对于习惯了jupyter的用户而言,可能会觉得zeppelin的快捷键支持和界面功能方面都还有待提升;

当前zeppelin最新版本为0.9.0

7)Airflow:Airflow是一个调度管理工具(因其最早源于Airbnb公司,所以名字含有air),现也是Apache顶级项目,功能有些类似于linux下的定时任务调度工具crontab,但功能更为完备,包括提供了多种类型调度任务、可通过WEB UI便捷管理、支持分布式多节点执行等。个人目前将其余mlflow配套使用,共同完成从数据预处理到特征构建直至算法建模输出整个流程的调度使用,目前仍在持续探索中。

0 人点赞