Hadoop入門進階課程1--Hadoop1.X僞分佈式安裝

本文版權歸做者和博客園共有,歡迎轉載,但未經做者贊成必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接,博主爲石山園,博客地址爲 http://www.cnblogs.com/shishanyuan  。該系列課程是應邀實驗樓整理編寫的,這裏須要贊一下實驗樓提供了學習的新方式,能夠邊看博客邊上機實驗,課程地址爲 https://www.shiyanlou.com/courses/237html

【注】該系列所使用到安裝包、測試文件和代碼能夠在百度網盤下載,具體地址爲 http://pan.baidu.com/s/10PnDs ,下載該PDF文件java

1Hadoop介紹

1.1Hadoop簡介

Apache Hadoop軟件庫是一個框架,容許在集羣服務器上使用簡單的編程模型對大數據集進行分佈式處理。Hadoop被設計成可以從單臺服務器擴展到數以千計的服務器,每臺服務器都有本地的計算和存儲資源。Hadoop的高可用性並不依賴硬件,其代碼庫自身就能在應用層偵測並處理硬件故障,所以能基於服務器集羣提供高可用性的服務。node

1.2Hadoop生態系統

通過多年的發展造成了Hadoop1.X生態系統,其結構以下圖所示:linux

clip_image002[1]

lHDFS--Hadoop生態圈的基本組成部分是Hadoop分佈式文件系統(HDFS)。HDFS是一種數據分佈式保存機制,數據被保存在計算機集羣上,HDFSHBase等工具提供了基礎。數據庫

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

1.3Apache版本衍化

Apache Hadoop版本分爲兩代,咱們將第一代Hadoop稱爲Hadoop 1.0,第二代Hadoop稱爲Hadoop 2.0。第一代Hadoop包含三個大版本,分別是0.20.x0.21.x0.22.x,其中,0.20.x最後演化成1.0.x,變成了穩定版,而0.21.x0.22.x包含NameNode HA等新的重大特性。第二代Hadoop包含兩個版本,分別是0.23.x2.x,它們徹底不一樣於Hadoop 1.0,是一套全新的架構,均包含HDFS FederationYARN兩個系統,相比於0.23.x2.x增長了NameNode HAWire-compatibility兩個重大特性。

clip_image003[1]

2Hadoop1.X僞分佈安裝

Hadoop安裝有以下三種方式

l單機模式:安裝簡單,幾乎不用做任何配置,但僅限於調試用途;

l僞分佈模式:在單節點上同時啓動NameNodeDataNodeJobTrackerTaskTrackerSecondary Namenode5個進程,模擬分佈式運行的各個節點;

l徹底分佈式模式:正常的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搭建環境:

l  虛擬機操做系統: CentOS6.6  64位,單核,1G內存

l  JDK1.7.0_55 64

l  Hadoop1.1.2

2.2環境搭建(實驗樓虛擬機已設置,如下提供參考)

實驗環境的虛擬機已經完成的安裝環境的配置,其餘環境部署時能夠參考該章節進行環境搭建。

2.2.1配置本地環境

該部分對服務器的配置須要在服務器本地進行配置,配置完畢後須要重啓服務器確認配置是否生效,特別是遠程訪問服務器須要設置固定IP地址。

2.2.1.1設置IP地址

1.  點擊System-->Preferences-->Network Connections,以下圖所示:

clip_image005[1]

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",不然經過遠程鏈接時會在服務器重啓後沒法鏈接服務器

clip_image007[1]

3.在命令行中,使用ifconfig命令查看設置IP地址信息,若是修改IP不生效,須要重啓機器再進行設置(若是該機器在設置後須要經過遠程訪問,建議重啓機器,確認機器IP是否生效)

2.2.1.2設置機器名

使用sudo vi /etc/sysconfig/network 打開配置文件,根據實際狀況設置該服務器的機器名,新機器名在重啓後生效

clip_image009[1]

2.2.1.3設置Host映射文件

1.  設置IP地址與機器名的映射,設置信息以下:

sudo vi /etc/hosts

l 192.168.42.8 b393a04554e1 hadoop

clip_image011[1]

2.使用以下命令對網絡設置進行重啓

sudo /etc/init.d/network restart

3.使用ping命令驗證設置是否成功

2.2.2設置操做系統環境

2.2.2.1關閉防火牆

Hadoop安裝過程當中須要關閉防火牆和SElinux,不然會出現異常

1.使用sudo service iptables status 查看防火牆狀態,以下所示表示iptables已經開啓

clip_image013[1]

2.root用戶使用以下命令關閉iptables

chkconfig iptables off

clip_image015[1]

2.2.2.2關閉SElinux

1.使用sudo getenforce命令查看是否關閉,若是顯示Enforcing表示沒有關閉

2. 修改/etc/selinux/config 文件

SELINUX=enforcing改成SELINUX=disabled,執行該命令後重啓機器

clip_image017[1]

2.2.2.3JDK安裝及配置

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,以下圖所示:

clip_image019[1]

2.建立/app目錄,把該目錄的全部者修改成shiyanlou

sudo mkdir /app

sudo chown -R shiyanlou:shiyanlou /app

clip_image021[1]

3. 建立/app/lib目錄,使用命令以下:

mkdir /app/lib

clip_image023[1]

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

clip_image025[1]

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

clip_image027[1]

6.編譯並驗證

source /etc/profile

java -version

clip_image029[1]

2.2.2.4更新OpenSSL

CentOS自帶的OpenSSL存在bug,若是不更新OpenSSLAmbari部署過程會出現沒法經過SSH鏈接節點,使用以下命令進行更新:

yum update openssl

clip_image031[1]

 

clip_image033[1]

2.2.2.5SSH無密碼驗證配置

1.使用sudo vi /etc/ssh/sshd_config打開sshd_config配置文件,開放三個配置,以下圖所示:

RSAAuthentication yes

PubkeyAuthentication yes

AuthorizedKeysFile .ssh/authorized_keys

clip_image035[1]

2.配置後重啓服務

sudo service sshd restart

clip_image037[1]

3.使用shiyanlou用戶登陸使用以下命令生成私鑰和公鑰;

ssh-keygen -t rsa

clip_image039[1]

4.進入/home/shiyanlou/.ssh目錄把公鑰命名爲authorized_keys,使用命令以下:

cp id_rsa.pub authorized_keys

clip_image041[1]

5.使用以下設置authorized_keys讀寫權限

chmod 400 authorized_keys

clip_image043[1]

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

mv hadoop-1.1.2 /app

clip_image045[1]

2.3.2hadoop-1.1.2目錄下建立子目錄

cd /app/hadoop-1.1.2

mkdir tmp

mkdir hdfs

mkdir hdfs/name

mkdir hdfs/data

ls

clip_image047[1]

hdfs/data設置爲755,不然DataNode會啓動失敗

clip_image049[1]

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

clip_image051[1]

2.加入配置內容,設置了hadoopjdkhadoop/bin路徑

export JAVA_HOME=/app/lib/jdk1.7.0_55

export PATH=$PATH:/app/hadoop-1.1.2/bin

clip_image053[1]

3.編譯配置文件hadoop-env.sh並確認生效

source hadoop-env.sh

hadoop version

clip_image055[1]

2.3.4配置core-site.xml

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>

clip_image057[1]

2.3.5配置hdfs-site.xml

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>

clip_image059[1]

2.3.6配置mapred-site.xml

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>

clip_image061[1]

2.3.7配置mastersslaves文件

1.設子主節點

cd /app/hadoop-1.1.2/conf

vi masters

設置hadoop機器爲master節點

clip_image063[1]

2.設置從節點

cd /app/hadoop-1.1.2/conf

vi slaves

設置hadoop機器爲slaves節點,即自己便是master也是slaves節點

clip_image063[2]

2.3.8格式化namenode

hadoop機器上使用以下命令進行格式化namenode

cd /app/hadoop-1.1.2/bin

./hadoop namenode -format

clip_image065[1]

2.3.9啓動hadoop

cd /app/hadoop-1.1.2/bin

./start-all.sh

clip_image067[1]

2.3.10   jps檢驗各後臺進程是否成功啓動

使用jps命令查看hadoop相關進程是否啓動

clip_image069[1]

這時咱們發現少了一個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

clip_image071[1]

sudo chmod 755 /app/hadoop-1.1.2/hdfs/data

從新啓動hadoop集羣,能夠看到DataNode進程

相關文章
相關標籤/搜索