最近想學習下大數據,有點急於求成,因而去網上找了各類培訓機構的視頻,發現大都質量不佳,理論基本不說或者簡單講下,而後教你照貓畫虎的敲代碼,出了問題都無法分析。最後仍是找了廈門大學的公開課從理論開始穩紮穩打的學習了。node
Hadoop的理論起源主要來自谷歌公司的三大論文,並迅速應用於全球各大互聯網公司。所以,學習大數據Hadoop是繞不開的一個知識點。今年來,大數據的興起其實來自於計算機技術的發展,物聯網技術產生了大量的數據,雲技術使得計算機存儲與運算資源更加普及,所以大數據技術應運而出,用以解決大量數據的存儲與計算的問題。web
學習Hadoop,須要知道Hadoop生態圈中各個項目的功能與做用,爲什麼要用開發這種新項目,而不使用已有項目實現這種功能。數據庫
Hadoop的底層文件系統,與傳統文件系統不一樣在於它是分佈式的。同時與已有的分佈式文件系統相比,它又有着舊分佈式文件系統沒有的優勢。如:高可用性,高可靠性,吞吐量大,能使用廉價服務器構建,可經過不斷增長機器數來進行拓展。具體實如今HDFS文章中記錄。服務器
構建在HDFS之上的分佈式數據庫系統。是一種基於列的NoSQL數據庫,從另外一個角度看也能當作鍵值對的NoSQL數據庫。與傳統關係型數據庫相比,最大的優點在於可經過增長機器進行橫向擴展,而且能使用廉價服務器。app
一種分佈式數據倉庫,能夠導入外部數據後用類SQL語言進行操做。通常用於歷史數據的查詢與分析。與HBase不一樣,HBase經常使用於實時的交互式查詢。框架
一種分佈式計算框架,MapRuce原本就是一種計算模型的名稱。核心思想是「分而治之」,能將計算分解成多個小計算,由多個機器同時計算。適合離線批處理。webapp
一種流式計算框架,MapRuce適合批處理,沒法完成流式數據的處理,所以開發出流式處理框架。分佈式
基本的關係就是,底層用HDFS存儲,之上是核心計算框架MapRuduce。而Hive,Hbase,Pig等等組件通常都是將自身的操做轉化成Mapreduce代碼而後經過Mapreduce進行計算實現功能。同時與MapRuduce框架同一層次的Storm解決了流式數據的處理。Hbase雖然是使用Mapreduce框架進行處理,可是基本也能實現實時交互式處理的要求。(也正是Mapreduce存在種種問題,Spark漸漸興起,雖然Mapreduce也作了各類優化,可是在某些領域相比Spark仍是有些差距)。oop
準備。同一局域網的Linux服務器數臺,我是用個人遊戲本同時開了3個虛擬機代替的。學習
Linux裏建立hadoop用戶,專門負責Hadoop項目,便於管理與權限劃分。
安裝JDK,下載Hadoop時官方會指明JDK版本需求,設置JDK環境變量
安裝SSH並設置免密登陸。由於HDFS的NameNode與其餘DateNode等節點的通信與管理就是基於SSH協議的。而且將要使用的機器域名寫入hosts文件,方便命名。
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://Master:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>file:/usr/local/hadoop/tmp</value> <description>Abase for other temporary directories.</description> </property> </configuration>
<configuration> <property> <name>dfs.namenode.secondary.http-address</name> <value>Master:50090</value> </property> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/usr/local/hadoop/tmp/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/usr/local/hadoop/tmp/dfs/data</value> </property> </configuration>
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.jobhistory.address</name> <value>Master:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>Master:19888</value> </property> </configuration>
<configuration> <property> <name>yarn.resourcemanager.hostname</name> <value>Master</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration>
看看網友博客和官方文檔差很少就會了,基本一個形式。下載解壓-配置環境變量-配置組件的配置文件,基本都是xxxx-env.sh,xxx-site.sh,xxx-core.sh,slave,work這種,在裏面按照需求配置參數就行了,具體參數意思和必需要配置的參數看看官方文檔也就懂了(滑稽)。