HADOOP背景介紹 1.1Hadoop產生背景 ——分散式文件系統(GFS),可用於處理海量網頁的存儲 ——分散式計算框架MAPREDUCE,可用於處理海量網頁的索引計算問題。 1.2 什麼是HADOOP 1.3 HADOOP在大數據、雲計算中的位置和關係 1.4Hadoop生態系統 HDFS:分 ...
HADOOP背景介紹
1.1Hadoop產生背景
- HADOOP最早起源於Nutch。Nutch的設計目標是構建一個大型的全網搜索引擎,包括網頁抓取、索引、查詢等功能,但隨著抓取網頁數量的增加,遇到了嚴重的可擴展性問題——如何解決數十億網頁的存儲和索引問題。
- 2003年、2004年谷歌發表的兩篇論文為該問題提供了可行的解決方案。(谷歌為現代技術做了十分大的貢獻!!)
——分散式文件系統(GFS),可用於處理海量網頁的存儲
——分散式計算框架MAPREDUCE,可用於處理海量網頁的索引計算問題。
- Nutch的開發人員完成了相應的開源實現HDFS和MAPREDUCE,並從Nutch中剝離成為獨立項目HADOOP,到2008年1月,HADOOP成為Apache頂級項目,迎來了它的快速發展期。
1.2 什麼是HADOOP
- HADOOP是apache旗下的一套開源軟體平臺(apache軟體幾乎都開源)
- HADOOP提供的功能:利用伺服器集群,根據用戶的自定義業務邏輯,對海量數據進行分散式處理
- HADOOP的核心組件有
- HDFS(分散式文件系統)
- YARN(運算資源調度系統)
- MAPREDUCE(分散式 運算編程框架)
1.3 HADOOP在大數據、雲計算中的位置和關係
1. 雲計算是分散式計算、並行計算、網格計算、多核計算、網路存儲、虛擬化、負載均衡等傳統電腦技術和互聯網技術融合發展的產物。藉助IaaS(基礎設施即服務)、PaaS(平臺即服務)、SaaS(軟體即服務)等業務模式,把強大的計算能力提供給終端用戶。
2. 現階段,雲計算的兩大底層支撐技術為“虛擬化”和“大數據技術。
3. 而HADOOP則是雲計算的PaaS層的解決方案之一,並不等同於PaaS,更不等同於雲計算本身。
1.4Hadoop生態系統
HDFS:分散式文件系統(hdfs、MAPREDUCE、yarn)元老級大數據處理技術框架,擅長離線數據分析
MAPREDUCE:分散式運算程式開發框架
HIVE:基於大數據技術(文件系統+運算框架)的SQL數據倉庫工具,使用方便,功能豐富。但基於MR會有很大的延遲。
HBASE:基於HADOOP的分散式海量資料庫,離線分析和線上業務通吃, 是 Google Bigtable 的另一套開源實現。
ZOOKEEPER:分散式協調服務基礎組件,提供的功能包括:配置維護、名字服務、 分散式同步、心跳、組服務等
Mahout:基於mapreduce/spark/flink等分散式運算框架的機器學習演算法庫提供可擴展的電腦學習領域的演算法實現,旨在幫助開發人員更加快捷地開發智能 應用程式。
Oozie:工作流調度框架
Sqoop:數據導入導出工具
Flume:日誌數據採集框架
Avro: 基於JSON的數據序列化的系統。
Cassandra: 一套分散式,非關係型存儲系統,類似Google - BigTable。
Chukwa: 用於監控大型分散式系統的數據採集系統。
Pig:提供一個並行執行的數據流框架。
Spark:類似MapReduce的通用並行框架,繼承了其的分散式優勢,只是中間輸出結果存儲 於記憶體中,提供了相對實時性的處理能力
Tez:新的一套分散式執行框架,主要以開發人員為最終用戶構建性能更快、擴展性更強的應 用程式。
1.5Hadoop大數據項目流程圖
1) 數據採集:定製開發採集程式,或使用開源框架FLUME
2) 數據預處理:定製開發mapreduce程式運行於hadoop集群
3) 數據倉庫技術:基於hadoop之上的Hive
4) 數據導出:基於hadoop的sqoop數據導入導出工具
5) 數據可視化:定製開發web程式或使用kettle等產品
6) 整個過程的流程調度:hadoop生態圈中的oozie工具或其他類似開源產品
1.6Hadoop集群的安裝
提前準備:虛擬機的正常安裝,網卡啟動成功,Xshell和ftp軟體。jdk的壓縮包,和Hadoop的壓縮包。
HadoopMaster1 NameNode SecondaryNameNode 192.168.242.110
HadoopYarn ResourceManager 192.168.242.111
HadoopSlaver1 DataNode NodeManager 192.168.242.112
HadoopSlaver2 DataNode NodeManager 192.168.242.113
HadoopSlaver3 DataNode NodeManager 192.168.242.114
1.6.1上傳jdk安裝包(用xftp上傳文件)
解壓到相應目錄:rpm -ivh ./xxxxx.jdk ./user/java
編輯環境變數:為了在各個目錄下能運行JAVA代碼
vim /etc/profile
export JAVA_HOME=/usr/java/jvm/jdk1.7.0_79
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
wq後保存: source /etc/profile 配置更新
echo java 檢驗 或者 javac java-version
1.6.2 Hadoop的安裝
1、解壓到相應目錄:cd /usr/local tar –zxvf ./hadoop-2.7.2.tar.gz
把目錄修改為hadoop mv hadoop-2... hadoop
2、修改hadoop-env.sh
vim /usr/local/hadoop/etc/hadoop/hadoop-env.sh
修改export JAVA_HOME 語句為 export JAVA_HOME=/usr/java/default
3、修改core-site.xml 配置埠
cd /usr/local/hadoop/etc/hadoop
vi core-site.xml
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file://usr/hadoop/hadoop-2.6.4/tmp</value> //文件存儲的目錄。需要創建
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value> //集群Master的埠號
</property>
</configuration>
###修改secondaryNamenode中的core-site.xml 配置冷備份
<property>
<name>fs.checkpoint.period</name>
<value>60</value>
</property>
<property>
<name>fs.checkpoint.size</name>
<value>67108864</value>
</property>
<property>
<name>fs.checkpoint.dir</name>
<value>file:/usr/hadoop/hadoop-2.8.0/dfs/fsimage/</value> //需要把映射文件考到這個目錄
</property>
<property>
<name>fs.checkpoint.edits.ir</name>
<value>file:/usr/hadoop/hadoop-2.8.0/dfs/edits/</value>
</property>
4、修改集群hdfs-site.xml配置
vi hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name> //冷備份
<value>HadoopMaster1 :50090</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/hadoop/data/name</value>//主文件的存儲目錄需要在相應目錄創建
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/hadoop/data/data</value>//data文件的存儲目錄需要在相應目錄創建
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.secondary.http.address</name>
<value>hdp-node-01:50090</value>
</property>
</configuration>
5、配hadoop的環境變數 把/usr/hadoop/bin和/usr/hadoop/sbin設到PATH中
vi /etc/profile
export PATH=$PATH:/usr/hadoop/bin:/usr/hadoop/sbin
更新:source etc/profile
測試hadoop命令是否可以直接執行,任意目錄下敲hadoop
1.6.3Yarn的搭建
配置計算調度系統Yarn和計算引擎Map/Reduce
1 namenode上配置 mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
2 yarn-site.xml的配置
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
3啟動yarn集群start-yarn.sh
4 jps觀察啟動結果
1.6.4搭建五台機器,集群
1、關閉虛擬機,完全克隆複製5份(一個個啟動 修改IP和hostname)
分別修改虛擬機的ip vim/etc/sysconfig/network-scripts/ifcfg-env33跟之前的圖對應
修改hostname vim /etc/hostname 對應之前的名
2、確認互相能夠ping通,用ssh登陸
在主機創建 .shh目錄
ssh-keygen -t rsa
ssh-copy-id (子機IP和自己IP)一直確定完成免密,hosts修改可以改名
3,同時修改所有虛擬機的/etc/hosts,確認使用名字可以ping通
HadoopMaster1 192.168.242.110
HadoopYarn 192.168.242.111
HadoopSlaver1 192.168.242.112
HadoopSlaver2 192.168.242.113
HadoopSlaver3 192.168.242.114
4,修改master上/etc/hadoop/slaves文件,每一個slave占一行(子機的名)
HadoopSlaver1
HadoopSlaver2
HadoopSlaver3
現在集群namenode datanode已經可以啟動了
使用start-dfs.sh啟動集群,jps並觀察結果
配置文件詳細信息以後慢慢搭建時會慢慢更改。
現在這個集群完全搭建完畢,過程較長。建議初學者一點一點搭環境。配置文件可能會有問題。後續慢慢更改。