大數據技術棧
存儲 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模式