大数据生态
1、什么是大數據?
????????大數據(big data),IT行業術語,是指無法在一定時間范圍內用常規軟件工具進行捕捉、管理和處理的數據集合,是需要新處理模式才能具有更強的決策力、洞察發現力和流程優化能力的海量、高增長率和多樣化的信息資產。由IBM提出的大數據的五個特征(5V):Volume(大量)、Velocity(高速)、Variety(多樣)、Value(價值)、Veracity(真實性)。
2、什么是大數據生態?
????????大數據生態(BigData Ecology)。網絡化數據社會與現實社會的有機融合、互動以及協調,形成大數據感知、管理、分析與應用服務的新一代信息技術架構和良性增益的閉環生態系統。
????????大數據的核心是Hadoop生態系統。我們通常可能會根據特定的用特來描述軟件工具,比如:Oracle是數據庫、Apache Tomcat 是 Web 服務器。不過,Hadoop就有些復雜,Hadoop 是大量工具集合,這些工具可以協同工作來完成特定的任務。可以說Hadoop是一個數據管理系統,將海量的結構化和非結構化數據聚集在一起,這些數據涉及傳統企業數據棧的幾乎每一個層次,其定位是在數據中心占據核心地位。也可以說,Hadoop 是大規模并行執行框架,把超級計算機的能力帶給大眾,致力于加速企業級應用的執行。由于 Hadoop 提供如此廣泛的功能,可以適用于解決大量問題,也可以說,Hadoop 是基礎框架。Hadoop 提供所有這些功能,因此應該將 Hadoop 歸類為一個生態系統,它包含大量的組件,從數據存儲到數據集成、數據處理以及數據分析師的專用工具。
2.1 大數據生態(Hadoop)
MapReduce
主要由Google Reduce而來,它簡化了大型數據的處理,是一個并行的,分布式處理的編程模型。
hadoop2.0它是基于YARN框架構建的。YARN的全稱是Yet-Another-Resource-Negotiator。Yarn可以運用在S3|Spark等上。
HDFS
它是由Google File System而來,全稱是Hadoop Distributed File System,是Hadoop的分布式文件系統,有許多機器組成的,可以存儲大型數據文件。
它是由NameNode和DataNode組成,NameNode可以配置成HA(高可用),避免單點故障。一般用Zookeeper來處理。兩個NameNode是同步的。
Hive
它是Hadoop的數據倉庫(DW),它可以用類似SQL的語言HSQL來操作數據,很是方便,主要用來聯機分析處理OLAP(On-Line Analytical Processing),進行數據匯總|查詢|分析。
HBase
它是由Google BigTable而來。是Hadoop的數據庫。HBase底層還是利用的Hadoop的HDFS作為文件存儲系統,可以利用Hadoop的MR來處理HBase的數據,它也通常用Zookeeper來做協同服務。
Zookeeper
它是一個針對大型分布式系統的可靠協調系統,在Hadoop|HBase|Strom等都有用到,它的目的就是封裝好復雜易出錯的關鍵服務,提供給用戶一個簡單|可靠|高效|穩定的系統。提供配置維護|分布式同步|名字服務等功能,Zookeeper主要是通過lead選舉來維護HA或同步操作等
Pig
它提供一個引擎在Hadoop并行執行數據流。它包含了一般的數據操作如join|sort|filter等,它也是使用MR來處理數據。
Mahout
它是機器學習庫。提供一些可擴展的機器學習領域經典算法的實現,目的是幫助開發人員更加方便快捷地創建智能應用程序。Mahout包含許多實現,包括聚類、分類、推薦算法等。
2.2? 大數據架構
大數據架構師,是架構師的一種。如何學習才能成為大數據架構師?從數據庫SQL到NoSQL,從新手到大師?我們來看這篇現身說法的文章。
先扯一下大數據的4V特征:
????????1、數據量大,TB->PB
????????2、數據類型繁多,結構化、非結構化文本、日志、視頻、圖片、地理位置等;
????????3、商業價值高,但是這種價值需要在海量數據之上,通過數據分析與機器學習更快速的挖掘出來;
????????4、處理時效性高,海量數據的處理需求不再局限在離線計算當中。
現如今,正式為了應對大數據的這幾個特點,開源的大數據框架越來越多,越來越強,先列舉一些常見的:
· 文件存儲:Hadoop HDFS
· 離線計算:Hadoop MapReduce、Spark
· 流式、實時計算:Storm、Spark Streaming
· K-V、NOSQL數據庫:HBase、Redis、MongoDB
· 資源管理:YARN、Mesos
· 日志收集:Flume、Scribe、Logstash、Kibana
· 消息系統:Kafka、StormMQ、ZeroMQ、RabbitMQ
· 查詢分析:Hive、Impala、Presto、Phoenix、SparkSQL、Flink、Kylin、Druid
· 分布式協調服務:Zookeeper
· 集群管理與監控:Ambari、Ganglia、Nagios、Cloudera Manager
· 數據挖掘、機器學習:Mahout、Spark MLLib
· 數據同步:Sqoop
· 任務調度:Oozie
2.3 Hadoop快速入門(官方有文檔說明最新版本)
?Apache Hadoop 3.3.1?
支持的平臺:?
- GNU/Linux作為開發和生產平臺受到支持。Hadoop已經在具有2000個節點的GNU/Linux集群上進行了演示。
- Windows也是一個受支持的平臺,但以下步驟僅適用于Linux。要在Windows上設置Hadoop,請參見wiki頁面。
所需軟件:
Linux所需的軟件包括:
安裝軟件:
如果您的集群沒有必要的軟件,則需要安裝它。
例如,在Ubuntu Linux上:
下載:
要獲得Hadoop發行版,請從一個Apache下載鏡像下載最近的穩定版本。
準備啟動Hadoop集群:
解壓縮下載的Hadoop發行版。在發行版中,編輯文件etc/hadoop/hadoop-env.sh,定義一些參數如下:
請嘗試以下命令:
$ bin/hadoop這將顯示hadoop腳本的用法文檔。
現在,您可以使用以下三種支持的模式之一啟動Hadoop群集:
- Local (Standalone) Mode
- Pseudo-Distributed Mode
- Fully-Distributed Mode
獨立操作:
????????默認情況下,Hadoop被配置為在非分布式模式下作為單個Java進程運行。這對調試很有用。
下面的示例復制解壓縮的conf目錄作為輸入,然后查找并顯示給定正則表達式的每個匹配項。輸出被寫入給定的輸出目錄。
偽分布式操作:
Hadoop還可以以偽分布式模式在單個節點上運行,其中每個Hadoop守護進程在單獨的Java進程中運行。
配置
使用以下選項:
etc/hadoop/core-site.xml:
?etc/hadoop/hdfs-site.xml:
<configuration><property><name>dfs.replication</name><value>1</value></property> </configuration>安裝無密碼ssh:
現在檢查您是否可以使用ssh連接到本地主機,而無需密碼短語:
如果在沒有密碼短語的情況下無法ssh到localhost,請執行以下命令:
$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys$ chmod 0600 ~/.ssh/authorized_keys執行
以下說明用于在本地運行MapReduce作業。如果要在上YARN執行作業,參見?YARN on Single Node.?
格式化文件系統:
$ bin/hdfs namenode -format啟動NameNode守護程序和DataNode守護程序:
$ sbin/start-dfs.shhadoop守護程序日志輸出被寫入$hadoop\u log\u DIR目錄(默認為$hadoop\u HOME/logs)。
瀏覽NameNode的web界面;默認情況下,它在以下位置可用:
- NameNode -?http://localhost:9870/
生成執行MapReduce作業所需的HDFS目錄:
$ bin/hdfs dfs -mkdir /user$ bin/hdfs dfs -mkdir /user/<username>將輸入文件復制到分布式文件系統:
$ bin/hdfs dfs -mkdir input$ bin/hdfs dfs -put etc/hadoop/*.xml input運行提供的一些示例:
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar grep input output 'dfs[a-z.]+'檢查輸出文件:將輸出文件從分布式文件系統復制到本地文件系統并進行檢查:
$ bin/hdfs dfs -get output output$ cat output/*或者查看分布式文件系統上的輸出文件:
$ bin/hdfs dfs -cat output/*完成后,使用以下命令停止守護程序:
$ sbin/stop-dfs.sh?YARN??在單個節點上
通過設置一些參數并另外運行ResourceManager守護程序和NodeManager守護程序,可以在YARN上以偽分布式模式運行MapReduce作業。
以下指令假設上述指令的1.~4.步驟已經執行。
配置參數如下:
etc/hadoop/mapred-site.xml:
<configuration><property><name>mapreduce.framework.name</name><value>yarn</value></property><property><name>mapreduce.application.classpath</name><value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value></property> </configuration>etc/hadoop/yarn-site.xml:
<configuration><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><property><name>yarn.nodemanager.env-whitelist</name><value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_HOME,PATH,LANG,TZ,HADOOP_MAPRED_HOME</value></property> </configuration>啟動ResourceManager守護程序和NodeManager守護程序:
$ sbin/start-yarn.sh? ? ? ? ? ? ? ? ?運行MapReduce作業。
完成后,使用以下命令停止守護程序:
$ sbin/stop-yarn.sh?全分布式操作:
有關設置完全分布式的非平凡集群的信息,請參閱集群設置。
總結
- 上一篇: 自定义字符串函数:strlen,strc
- 下一篇: 内核中的竞争状态和互斥(简述)