大数据技术栈
存储 HDFS Hbase
资源管理和协调 YARN Zookeeper
计算: Hive Spark Flink
其他: ES redis
框架系统构成
配置
执行目录
文件构成
日志系统
服务
01.配置
hadoop/etc/hadoop/hdfs-site.xml
hbase/conf/hbase-site.xml
/etc/redis/redis.conf
02.日志
hadoop/logs/hadoop-evs-namenode-evs-xps.log
03.启动
hadoop/sbin/start-all.sh
hadoop/sbin/stop-all.sh
hbase/bin/start-hbase.sh
hbase/bin/start-hbase.sh
hbase/bin/hbase-daemon.sh start regionserver
04.运行
hadoop/bin/hdfs
/usr/bin/redis-server
05.服务
jps
HDFS: NameNode SecondaryNameNode datanode
YARN: ResourceManager
Hbase: HMaster HRegionServer HQuorumPeer
服务:
systemctl status redis
具体
构成组件
基本功能
启动流程-执行流程-启动的服务
文件系统
大数据详情
配置和命令
1.Hadoop
hadoop fs -du -s -h /test
hadoop fs -ls /test
-s, --summarize display only a total for each argument
-h, --human-readable
-d, --max-depth=N
'hadoop-env.sh' 中 JAVA_HOME= 的配置
ls /usr/lib/jvm
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-1.el7.x86_64/jre
大数据比较
1.MapReduce
将复杂的、运行于大规模集群上的并行计算过程高度地抽象到了两个函数:Map和Reduce
大规模数据集,会被切分成许多独立的分片(split),这些分片可以被多个Map任务并行处理
将小数据集进一步分为<key, value>对
2.Spark和Flink
1.spark提供了更丰富的算子
Map阶段的map, flatMap, filter, keyBy,
Reduce阶段的reduceByKey, sortByKey, mean, gourpBy, sort
2.Flink
有状态的计算
Managed State是由Flink管理的,Flink帮忙存储、恢复和优化,
Raw State是开发者自己管理的,需要自己序列化
状态的数据结构上来说,Managed State支持了一系列常见的数据结构,
如ValueState、ListState、MapState
对Managed State继续细分,它又有两种类型:
Keyed State和Operator State
3.split-apply-combine模式
大型数据集通常是高度结构化的,结构使得我们可以按不同的方式分组,
有时候我们需要关注单个组的数据片断,有时需要聚合不同组内的信息,并相互比较。
因此对数据的转换,可以采用split – apply – combine模式来进行处理:
split:把要处理的数据分割成小片断;
apply:对每个小片断独立进行操作;
combine:把片断重新组合。
利用这种模式解决问题在很多数据分析或编程问题中都会出现:
Python当中,是map( ),filter( ),reduce( );
Google 有 MapReduce;
R 当中是split( ),*apply( ),aggregate( )…,以及plyr包
base包中的apply函数族及其它的一些函数,直接对向量,数组,列表和数据框实现循环的操作
baseR
在R当中,split这个步骤是由split( ),subset( )等等函数完成的。
apply – combine步骤主要由apply函数族完
plyr包
可以针对不同的数据类型,在一个函数内同时完成split-apply-combine三个步骤,从而实现最大限度的高效和简洁
对应apply族的replicates和mapply这两个函数,分别表示n次重复和多元函数参数的情况
输入参数:
参数.data是我们要用来分片-计算-合并的;
参数.margins或者.variables描述了分片的方式;
参数.fun表示用来处理的函数,其它更多的参数是传递给处理函数的
其中
输入类型时向量a时,其分片的话只能按照维度分,于是便有了.margins参数,
输入类型为数据框d时,分片只能是某一个特征向量.variables,
输入类型列表的分片只能是其元素了,唯一确定,便不需指定了。
参考
数据转换:split-apply-combine模式