1.Hadoop介紹html
1.1Hadoop簡介java
Apache Hadoop軟件庫是一個框架,容許在集羣服務器上使用簡單的編程模型對大數據集進行分佈式處理。Hadoop被設計成可以從單臺服務器擴展到數以千計的服務器,每臺服務器都有本地的計算和存儲資源。Hadoop的高可用性並不依賴硬件,其代碼庫自身就能在應用層偵測並處理硬件故障,所以能基於服務器集羣提供高可用性的服務。node
1.2 Hadoop生態系統linux
通過多年的發展造成了Hadoop1.X生態系統,其結構以下圖所示: 數據庫
HDFS--Hadoop生態圈的基本組成部分是Hadoop分佈式文件系統(HDFS)。HDFS是一種數據分佈式保存機制,數據被保存在計算機集羣上,HDFS爲HBase等工具提供了基礎。編程
MapReduce--Hadoop的主要執行框架是MapReduce,它是一個分佈式、並行處理的編程模型,MapReduce把任務分爲map(映射)階段和reduce(化簡)。因爲MapReduce工做原理的特性,Hadoop能以並行的方式訪問數據,從而實現快速訪問數據。服務器
Hbase--HBase是一個創建在HDFS之上,面向列的NoSQL數據庫,用於快速讀/寫大量數據。HBase使用Zookeeper進行管理,確保全部組件都正常運行。網絡
Zookeeper--用於Hadoop的分佈式協調服務。Hadoop的許多組件依賴於Zookeeper,它運行在計算機集羣上面,用於管理Hadoop操做。架構
Pig--它是MapReduce編程的複雜性的抽象。Pig平臺包括運行環境和用於分析Hadoop數據集的腳本語言(Pig Latin)。其編譯器將Pig Latin翻譯成MapReduce程序序列。oracle
Hive--Hive相似於SQL高級語言,用於運行存儲在Hadoop上的查詢語句,Hive讓不熟悉MapReduce開發人員也能編寫數據查詢語句,而後這些語句被翻譯爲Hadoop上面的MapReduce任務。像Pig同樣,Hive做爲一個抽象層工具,吸引了不少熟悉SQL而不是Java編程的數據分析師。
Sqoop是一個鏈接工具,用於在關係數據庫、數據倉庫和Hadoop之間轉移數據。Sqoop利用數據庫技術描述架構,進行數據的導入/導出;利用MapReduce實現並行化運行和容錯技術。
Flume提供了分佈式、可靠、高效的服務,用於收集、彙總大數據,並將單臺計算機的大量數據轉移到HDFS。它基於一個簡單而靈活的架構,並提供了數據流的流。它利用簡單的可擴展的數據模型,將企業中多臺計算機上的數據轉移到Hadoop
1.3 Apache版本衍化
Apache Hadoop版本分爲兩代,咱們將第一代Hadoop稱爲Hadoop 1.0,第二代Hadoop稱爲Hadoop2.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兩個重大特性。
2 Hadoop1.X僞分佈安裝
Hadoop安裝有以下三種方式:
單機模式:安裝簡單,幾乎不用做任何配置,但僅限於調試用途;
僞分佈模式:在單節點上同時啓動NameNode、DataNode、JobTracker、TaskTracker、Secondary Namenode等5個進程,模擬分佈式運行的各個節點;
徹底分佈式模式:正常的Hadoop集羣,由多個各司其職的節點構成
因爲實驗環境的限制,本節課程將講解僞分佈模式安裝,並在隨後的課程中以該環境爲基礎進行其餘組件部署實驗。如下爲僞分佈式環境下在CentOS6中配置Hadoop-1.1.2,該配置能夠做爲其餘Linux系統和其餘版本的Hadoop部署參考。
2.1 軟硬件環境說明
節點使用CentOS系統,防火牆和SElinux禁用,建立了一個shiyanlou用戶,並在系統根目錄下建立/app目錄,用於存放Hadoop等組件運行包。由於該目錄用於安裝hadoop等組件程序,用戶對shiyanlou必須賦予rwx權限(通常作法是root用戶在根目錄下建立/app目錄,並修改該目錄擁有者爲shiyanlou(chown –R shiyanlou:shiyanlou /app)。
Hadoop搭建環境:
虛擬機操做系統:CentOS6.6 64位,單核,1G內存
JDK:1.7.0_55 64位
Hadoop:1.1.2
2.2 環境搭建(除2.2.1.3步驟須要學員設置外,其餘配置實驗樓虛擬機已設置)
實驗環境的虛擬機已經完成的安裝環境的配置,當其餘機器部署時能夠參考該章節進行環境搭建,須要關注的是JDK路徑爲/app/lib/jdk1.7.0_55。
2.2.1 配置本地環境
該部分對服務器的配置須要在服務器本地進行配置,配置完畢後須要重啓服務器確認配置是否生效,特別是遠程訪問服務器須要設置固定IP地址。
2.2.1.1 設置IP地址(實驗樓環境已配置,無需操做)
點擊System-->Preferences-->Network Connections,以下圖所示: 修改或重建網絡鏈接,設置該鏈接爲手工方式,設置以下網絡信息:
IP地址: 192.168.42.8
子網掩碼: 255.255.255.0
DNS: 221.12.1.227 (須要根據所在地設置DNS服務器)
Domain: 221.12.33.227
注意:網關、DNS等根據所在網絡實際狀況進行設置,並設置鏈接方式爲"Available to all users",不然經過遠程鏈接時會在服務器重啓後沒法鏈接服務器
在命令行中,使用ifconfig命令查看設置IP地址信息,若是修改IP不生效,須要重啓機器再進行設置(若是該機器在設置後須要經過遠程訪問,建議重啓機器,確認機器IP是否生效)
2.2.1.2 設置機器名(實驗樓環境已配置,無需操做)
使用sudo vi /etc/sysconfig/network
打開配置文件,根據實際狀況設置該服務器的機器名,新機器名在重啓後生效
2.2.1.3 設置Host映射文件(須要在實驗樓操做)
1.設置IP地址與機器名的映射,設置信息以下:
# 配置主機名對應的IP地址$ sudo vi /etc/hosts# sudo須要輸入shiyanlou用戶的密碼:shiyanlou
設置:<IP地址> <主機名> hadoop
例如:192.168.42.8 b393a04554e1 hadoop
3.使用ping命令驗證設置是否成功
$ ping hadoop
2.2.2 設置操做系統環境(實驗樓環境已配置,無需操做)
2.2.2.1 關閉防火牆
在Hadoop安裝過程當中須要關閉防火牆和SElinux,不然會出現異常
1.使用sudo service iptables status
查看防火牆狀態,以下所示表示iptables已經開啓
(注意:若彈出權限不足,可能防火牆已經關閉,請輸入命令:chkconfig iptables –list查看防火牆的狀態。)
2.使用以下命令關閉iptables
sudo chkconfig iptables off
2.2.2.2 關閉SElinux
1.使用getenforce命令查看是否關閉 2.修改/etc/selinux/config 文件 將SELINUX=enforcing改成SELINUX=disabled,執行該命令後重啓機器生效
2.2.2.3 JDK安裝及配置(實驗樓環境已配置,無需操做)
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
2.2.2.4 更新OpenSSL(實驗樓環境已配置,無需操做)
CentOS自帶的OpenSSL存在bug,若是不更新OpenSSL在Ambari部署過程會出現沒法經過SSH鏈接節點,使用以下命令進行更新: yum update openssl
2.2.2.5 SSH無密碼驗證配置(實驗樓環境已配置,無需操做)
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讀寫權限
sudo chmod 400 authorized_keys
6.測試ssh免密碼登陸是否生效
2.3 Hadoop變量配置
2.3.1 下載並解壓hadoop安裝包
在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
rm -rf /app/hadoop-1.1.2
mv hadoop-1.1.2 /app
2.3.2 在Hadoop-1.1.2目錄下建立子目錄
cd /app/hadoop-1.1.2
mkdir tmp
mkdir hdfs
mkdir hdfs/name
mkdir hdfs/data
ls
把hdfs/data設置爲755,不然DataNode會啓動失敗
2.3.3 配置hadoop-env.sh
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=/usr/lib/java/jdk1.7.0_55
export PATH=$PATH:/app/hadoop-1.1.2/bin
3.編譯配置文件hadoop-env.sh,並確認生效
source hadoop-env.sh
hadoop version
2.3.4 配置core-site.xml
1.使用以下命令打開core-site.xml配置文件
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>
2.3.5 配置hdfs-site.xml
1.使用以下命令打開hdfs-site.xml配置文件
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>
2.3.6 配置mapred-site.xml
1.使用以下命令打開mapred-site.xml配置文件
sudo vi mapred-site.xml
2.在配置文件中,按照以下內容進行配置
<configuration> <property> <name>mapred.job.tracker</name> <value>hadoop:9001</value> </property></configuration>
2.3.7 配置masters和slaves文件
1.設子主節點
vi masters
2.設置從節點
vi slaves
2.3.8 格式化namenode
在hadoop1機器上使用以下命令進行格式化namenode
hadoop namenode -format
2.3.9 啓動hadoop
cd /app/hadoop-1.1.2/bin ./start-all.sh
2.3.10 用jps檢驗各後臺進程是否成功啓動
使用jps命令查看hadoop相關進程是否啓動