本文版權歸做者和博客園共有,歡迎轉載,但未經做者贊成必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接,博主爲石山園,博客地址爲 http://www.cnblogs.com/shishanyuan 。該系列課程是應邀實驗樓整理編寫的,這裏須要贊一下實驗樓提供了學習的新方式,能夠邊看博客邊上機實驗,課程地址爲 https://www.shiyanlou.com/courses/237html
【注】該系列所使用到安裝包、測試文件和代碼能夠在百度網盤下載,具體地址爲 http://pan.baidu.com/s/10PnDs ,下載該PDF文件java
Apache Hadoop軟件庫是一個框架,容許在集羣服務器上使用簡單的編程模型對大數據集進行分佈式處理。Hadoop被設計成可以從單臺服務器擴展到數以千計的服務器,每臺服務器都有本地的計算和存儲資源。Hadoop的高可用性並不依賴硬件,其代碼庫自身就能在應用層偵測並處理硬件故障,所以能基於服務器集羣提供高可用性的服務。node
通過多年的發展造成了Hadoop1.X生態系統,其結構以下圖所示:linux
lHDFS--Hadoop生態圈的基本組成部分是Hadoop分佈式文件系統(HDFS)。HDFS是一種數據分佈式保存機制,數據被保存在計算機集羣上,HDFS爲HBase等工具提供了基礎。數據庫
lMapReduce--Hadoop的主要執行框架是MapReduce,它是一個分佈式、並行處理的編程模型,MapReduce把任務分爲map(映射)階段和reduce(化簡)。因爲MapReduce工做原理的特性, Hadoop能以並行的方式訪問數據,從而實現快速訪問數據。編程
lHbase--HBase是一個創建在HDFS之上,面向列的NoSQL數據庫,用於快速讀/寫大量數據。HBase使用Zookeeper進行管理,確保全部組件都正常運行。服務器
lZookeeper--用於Hadoop的分佈式協調服務。Hadoop的許多組件依賴於Zookeeper,它運行在計算機集羣上面,用於管理Hadoop操做。網絡
lPig--它是MapReduce編程的複雜性的抽象。Pig平臺包括運行環境和用於分析Hadoop數據集的腳本語言(Pig Latin)。其編譯器將Pig Latin翻譯成MapReduce程序序列。架構
lHive--Hive相似於SQL高級語言,用於運行存儲在Hadoop上的查詢語句,Hive讓不熟悉MapReduce開發人員也能編寫數據查詢語句,而後這些語句被翻譯爲Hadoop上面的MapReduce任務。像Pig同樣,Hive做爲一個抽象層工具,吸引了不少熟悉SQL而不是Java編程的數據分析師。oracle
lSqoop是一個鏈接工具,用於在關係數據庫、數據倉庫和Hadoop之間轉移數據。Sqoop利用數據庫技術描述架構,進行數據的導入/導出;利用MapReduce實現並行化運行和容錯技術。
lFlume提供了分佈式、可靠、高效的服務,用於收集、彙總大數據,並將單臺計算機的大量數據轉移到HDFS。它基於一個簡單而靈活的架構,並提供了數據流的流。它利用簡單的可擴展的數據模型,將企業中多臺計算機上的數據轉移到Hadoop
Apache Hadoop版本分爲兩代,咱們將第一代Hadoop稱爲Hadoop 1.0,第二代Hadoop稱爲Hadoop 2.0。第一代Hadoop包含三個大版本,分別是0.20.x,0.21.x和0.22.x,其中,0.20.x最後演化成1.0.x,變成了穩定版,而0.21.x和0.22.x包含NameNode HA等新的重大特性。第二代Hadoop包含兩個版本,分別是0.23.x和2.x,它們徹底不一樣於Hadoop 1.0,是一套全新的架構,均包含HDFS Federation和YARN兩個系統,相比於0.23.x,2.x增長了NameNode HA和Wire-compatibility兩個重大特性。
Hadoop安裝有以下三種方式
l單機模式:安裝簡單,幾乎不用做任何配置,但僅限於調試用途;
l僞分佈模式:在單節點上同時啓動NameNode、DataNode、JobTracker、TaskTracker、Secondary Namenode等5個進程,模擬分佈式運行的各個節點;
l徹底分佈式模式:正常的Hadoop集羣,由多個各司其職的節點構成
因爲實驗環境的限制,本節課程將講解僞分佈模式安裝,並在隨後的課程中以該環境爲基礎進行其餘組件部署實驗。如下爲僞分佈式環境下在CentOS6中配置Hadoop-1.1.2,該配置能夠做爲其餘Linux系統和其餘版本的Hadoop部署參考。
全部節點均是CentOS系統,防火牆和SElinux禁用,全部節點上均建立了一個shiyanlou用戶,並在系統根目錄下建立/app目錄,用於存放Hadoop等組件運行包。由於該目錄用於安裝hadoop等組件程序,用戶對shiyanlou必須賦予rwx權限(通常作法是root用戶在根目錄下建立/app目錄,並修改該目錄擁有者爲shiyanlou(chown –R shiyanlou:shiyanlou /app)。
Hadoop搭建環境:
l 虛擬機操做系統: CentOS6.6 64位,單核,1G內存
l JDK:1.7.0_55 64位
l Hadoop:1.1.2
實驗環境的虛擬機已經完成的安裝環境的配置,其餘環境部署時能夠參考該章節進行環境搭建。
該部分對服務器的配置須要在服務器本地進行配置,配置完畢後須要重啓服務器確認配置是否生效,特別是遠程訪問服務器須要設置固定IP地址。
1. 點擊System-->Preferences-->Network Connections,以下圖所示:
2. 修改或重建網絡鏈接,設置該鏈接爲手工方式,設置以下網絡信息:
IP地址: 192.168.42.11
子網掩碼: 255.255.255.0
網關: 192.168.42.1
DNS: 221.12.1.227 (須要根據所在地設置DNS服務器)
Domain: 221.12.33.227
注意:網關、DNS等根據所在網絡實際狀況進行設置,並設置鏈接方式爲"Available to all users",不然經過遠程鏈接時會在服務器重啓後沒法鏈接服務器
3.在命令行中,使用ifconfig命令查看設置IP地址信息,若是修改IP不生效,須要重啓機器再進行設置(若是該機器在設置後須要經過遠程訪問,建議重啓機器,確認機器IP是否生效)
使用sudo vi /etc/sysconfig/network 打開配置文件,根據實際狀況設置該服務器的機器名,新機器名在重啓後生效
1. 設置IP地址與機器名的映射,設置信息以下:
sudo vi /etc/hosts
l 192.168.42.8 b393a04554e1 hadoop
2.使用以下命令對網絡設置進行重啓
sudo /etc/init.d/network restart
3.使用ping命令驗證設置是否成功
在Hadoop安裝過程當中須要關閉防火牆和SElinux,不然會出現異常
1.使用sudo service iptables status 查看防火牆狀態,以下所示表示iptables已經開啓
2.以root用戶使用以下命令關閉iptables
chkconfig iptables off
1.使用sudo getenforce命令查看是否關閉,若是顯示Enforcing表示沒有關閉
2. 修改/etc/selinux/config 文件
將SELINUX=enforcing改成SELINUX=disabled,執行該命令後重啓機器
1.下載JDK1.7 64bit安裝包
打開JDK1.7 64bit安裝包下載連接爲:
http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
打開界面以後,先選中 Accept License Agreement ,而後下載 jdk-7u55-linux-x64.tar.gz,以下圖所示:
2.建立/app目錄,把該目錄的全部者修改成shiyanlou
sudo mkdir /app
sudo chown -R shiyanlou:shiyanlou /app
3. 建立/app/lib目錄,使用命令以下:
mkdir /app/lib
4.把下載的安裝包解壓並遷移到/app/lib目錄下
cd /home/shiyanlou/install-pack
tar -zxf jdk-7u55-linux-x64.tar.gz
mv jdk1.7.0_55/ /app/lib
ll /app/lib
5.使用sudo vi /etc/profile命令打開配置文件,設置JDK路徑
export JAVA_HOME=/app/lib/jdk1.7.0_55
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
6.編譯並驗證
source /etc/profile
java -version
CentOS自帶的OpenSSL存在bug,若是不更新OpenSSL在Ambari部署過程會出現沒法經過SSH鏈接節點,使用以下命令進行更新:
yum update openssl
1.使用sudo vi /etc/ssh/sshd_config打開sshd_config配置文件,開放三個配置,以下圖所示:
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
2.配置後重啓服務
sudo service sshd restart
3.使用shiyanlou用戶登陸使用以下命令生成私鑰和公鑰;
ssh-keygen -t rsa
4.進入/home/shiyanlou/.ssh目錄把公鑰命名爲authorized_keys,使用命令以下:
cp id_rsa.pub authorized_keys
5.使用以下設置authorized_keys讀寫權限
chmod 400 authorized_keys
6.測試ssh免密碼登陸是否生效
在Apache的歸檔目錄中下載hadoop-1.1.2-bin.tar.gz安裝包,也能夠在/home/shiyanlou/install-pack目錄中找到該安裝包,解壓該安裝包並把該安裝包複製到/app目錄中
cd /home/shiyanlou/install-pack
tar -xzf hadoop-1.1.2-bin.tar.gz
mv hadoop-1.1.2 /app
cd /app/hadoop-1.1.2
mkdir tmp
mkdir hdfs
mkdir hdfs/name
mkdir hdfs/data
ls
把hdfs/data設置爲755,不然DataNode會啓動失敗
1.進入hadoop-1.1.2/conf目錄,打開配置文件hadoop-env.sh
cd /app/hadoop-1.1.2/conf
vi hadoop-env.sh
2.加入配置內容,設置了hadoop中jdk和hadoop/bin路徑
export JAVA_HOME=/app/lib/jdk1.7.0_55
export PATH=$PATH:/app/hadoop-1.1.2/bin
3.編譯配置文件hadoop-env.sh並確認生效
source hadoop-env.sh
hadoop version
1.使用以下命令打開core-site.xml配置文件
cd /app/hadoop-1.1.2/conf
sudo vi core-site.xml
2.在配置文件中,按照以下內容進行配置
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://hadoop:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/app/hadoop-1.1.2/tmp</value>
</property>
</configuration>
1.使用以下命令打開hdfs-site.xml配置文件
cd /app/hadoop-1.1.2/conf
sudo vi hdfs-site.xml
2.在配置文件中,按照以下內容進行配置
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>/app/hadoop-1.1.2/hdfs/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/app/hadoop-1.1.2/hdfs/data</value>
</property>
</configuration>
1.使用以下命令打開mapred-site.xml配置文件
cd /app/hadoop-1.1.2/conf
sudo vi mapred-site.xml
2.在配置文件中,按照以下內容進行配置
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>hadoop:9001</value>
</property>
</configuration>
1.設子主節點
cd /app/hadoop-1.1.2/conf
vi masters
設置hadoop機器爲master節點
2.設置從節點
cd /app/hadoop-1.1.2/conf
vi slaves
設置hadoop機器爲slaves節點,即自己便是master也是slaves節點
在hadoop機器上使用以下命令進行格式化namenode
cd /app/hadoop-1.1.2/bin
./hadoop namenode -format
cd /app/hadoop-1.1.2/bin
./start-all.sh
使用jps命令查看hadoop相關進程是否啓動
這時咱們發現少了一個DataNode進程,到$HADOOP_HOME/logs目下,使用cat hadoop-shiyanlou-datanode-5****.log(***表示所在機器名)查看日誌文件,能夠看到在日誌中提示:Invalid directory in dfs.data.dir:Incorrect permission for /app/hadoop-1.1.2/hdfs/data, expected:rwxr-xr-x, while actual: rwxrwxr-x
sudo chmod 755 /app/hadoop-1.1.2/hdfs/data
從新啓動hadoop集羣,能夠看到DataNode進程