开发笔记 -- 大数据技术栈 (1) - 离线
一、cdh&ambair
大数据常用集群管理工具
使用方式与异同点对比:
靠谱环境搭建博文(也可以参考各自官网或github相关项目):
* cdh搭建: https://www.jianshu.com/p/106739236db4
* ambari安装:https://blog.csdn.net/Happy_Sunshine_Boy/article/details/86595945
二、hadoop
* hadoop由多个组件组成:
hdfs: 分布式文件系统,负责大文件存储,提供可靠性保障(副本策略或纠删码)
yarn:资源调度,可以协调hadoop集群处理资源,也可以通过其队列和容器封装管理其他计算框架(spark/flink)
mapreduce: 分布式计算引擎,shuffle比较耗时,目前计算引擎一般会选用tez/spark/flink
* hadoop中文文档
https://hadoop.apache.org/docs/r1.0.4/cn/hdfs_design.html
* hadoop权限问题
hdfs鉴权并不完善,原生鉴权是用户名鉴权,hdfs用户是其超级管理员用户名
可以整合Kerberos和ranger权限对其进行用户和数据进行权限控制
* Kerberos
https://www.wenjiangs.com/article/hadoop-kerberos-user-authentication.html
* ranger
https://blog.csdn.net/onlyForCloud/article/details/69257684
三、hive
构建于hdfs上层,用hsql控制MapReduce的OLAP数据仓库
* 官网wiki
https://cwiki.apache.org/confluence/display/Hive
* hive核心原理博文:
https://segmentfault.com/a/1190000039193704?utm_source=sf-related
https://blog.csdn.net/ForgetThatNight/article/details/79632364
* 常用Hive SQL
https://www.gairuo.com/p/hive-sql-tutorial
* Hive SQL 抽象语法解析
http://www.manongjc.com/detail/13-skeiftqvokuvrab.html
* 数仓使用方式
通常是在基于hive进行分层建模,然后由调度工具进行组织形成工作流
分层:把数据分为多个层级,每层数据定位到各自的维度和细节点(如经典的: ODS - DW - DM)
建模:根据业务关系对数据整体分布结构或关联关系定义(雪花模型,星型模型,星座模型等)
* 数仓调度工具
azkaban,oozie
四、hbase
基于hdfs面列存储的非关系型数据库
https://hbase.apache.org/
五、spark sql & flink sql
在主流计算框架spark和flink当中也由对应的可以建设到hdfs上的高效计算组件
spark sql & flink sql
使用方式一般是读取数据源(Source)创建为ds/df(spark)、table(flink)然后使用对应算子进行组合操作输出到目的地(Sink)
* flink 中文文档
https://nightlies.apache.org/flink/flink-docs-stable/zh/
* spark 中文文档
http://spark.apachecn.org/#/
五、数据传输工具
大部分场景下会涉及到数据的传输和收集,其中包括日志数据和数据库数据等
* 常用工具
dataX(alibaba开源数据传输工具):https://developer.aliyun.com/article/59373
sqoop(hive<-->rdbms): https://www.yiibai.com/sqoop/
flume(日志收集,扇入扇出): https://flume.apache.org/