在最開始階段,我們進行初始數據的收集工作,根據不同的業務場景,可能會涉及到的一些技術領域:分散日誌收集技術,諸如Scribe、Flume為代表的開源日誌收集系統;數據消息傳遞相關的技術,各種開源的消息隊列MQ,諸如ActiveMQ、RocketMQ、Kafka等;各種爬蟲技術、網頁解析技術;資料庫數 ...
在最開始階段,我們進行初始數據的收集工作,根據不同的業務場景,可能會涉及到的一些技術領域:分散日誌收集技術,諸如Scribe、Flume為代表的開源日誌收集系統;數據消息傳遞相關的技術,各種開源的消息隊列MQ,諸如ActiveMQ、RocketMQ、Kafka等;各種爬蟲技術、網頁解析技術;資料庫數據轉換技術,如Apache的Sqoop等;
在數據處理階段,通常我們會有兩種不同的處理方式,一種是在數據落地之前,我們進行預處理,典型如Storm為代表的實時處理系統,還有近一兩年比較火的Spark Streming;還有一種就是落地之後進行的批量離線處理,如Hadoop的MapReduce,以及使用Spark進行處理。當然,對於數據的預處理,並不是說一定要用到什麼框架,但是這個過程肯定是需要的,我們需要對數據進行進一步得過濾、規整操作。
然後是數據的落地,對於規整之後的數據,我們需要進行落地存儲,然後才能做進一步的處理。對於一般性的大規模存儲,目前有很多開源的分散式文件系統方案,典型如HDFS,但更多的是存入數據倉庫中,或者一些NoSQL中。其中以Hadoop生態中的Hive以及Hbase為代表。
然後在整個數據被規整到存儲落地的過程中,是一整套完整的數據處理流程,是一個完善的數據處理平臺,我們可能還會涉及到一些分散式的協調系統,典型如Zookeeper;還涉及到一些分散式平臺的監控,如Ganglia和Nagios的結合使用,以及Puppet、Zabbix等等相關技術。
然後接著就是數據的價值體現,對於部分業務來說,處理過的數據已經是可以直接使用了,例如通過數據倉庫的操作,直接對外展現;而部分數據則是需要對其進行統計分析,例如通過對Hive的各種操作,生產的各種BI報表,我們則可以從中找到現有數據的規律,進而完善我們的業務策略;而部分業務則希望現有的數據對未來數據能夠產生影響,所以引入了各種數據深度挖掘的東西,例如在大規模數據挖掘場景下的Mahout以及Spark的MLlib等;還有部分業務則是想把這些數據作為一個搜索數據源,那這個時候我們會對數據索引化的操作。
摘選自http://blogchong.baijia.baidu.com/article/209901