Hadoop-2.7.4 叢集快速搭建

搜雲庫技術團隊發表於2017-09-19

Hadoop簡介

2003-2004年,Google公開了部分GFS和Mapreduce思想的細節,以此為基礎Doug Cutting等人用了2年業餘時間實現了DFS和Mapreduce機制,一個微縮版:Nutch

Hadoop 於 2005 年秋天作為 Lucene的子專案 Nutch的一部分正式引入Apache基金會。2006 年 3 月份,Map-Reduce 和 Nutch Distributed File System (NDFS) 分別被納入稱為 Hadoop 的專案中

Hadoop

分散式儲存系統HDFS (Hadoop Distributed File System )

  • 分散式儲存系統
  • 提供了 高可靠性、高擴充套件性和高吞吐率的資料儲存服務

分散式計算框架MapReduce

  • 分散式計算框架
  • 具有 易於程式設計、高容錯性和高擴充套件性等優點。

HDFS優點

高容錯性

  • 資料自動儲存多個副本
  • 副本丟失後,自動恢復

適合批處理

  • 移動計算而非資料
  • 資料位置暴露給計算框架

適合大資料處理

  • GB 、TB 、甚至PB 級資料
  • 百萬規模以上的檔案數量
  • 10K+ 節點

可構建在廉價機器上

  • 通過多副本提高可靠性
  • 提供了容錯和恢復 機制

HDFS缺點

低延遲資料訪問

  • 比如毫秒級
  • 低延遲與高吞吐率

小檔案存取

  • 佔用NameNode 大量記憶體
  • 尋道時間超過讀取時間

併發寫入、檔案隨機修改

  • 一個檔案只能有一個寫者
  • 僅支援append

準備工作

環境

JDK:1.8  
Hadoop Release:2.7.4  
centos:7.3  

node1(master)  主機: 192.168.252.121  
node2(slave1)  從機: 192.168.252.122  
node3(slave2)  從機: 192.168.252.123  
複製程式碼

安裝 JDK

CentOs7.3 安裝 JDK1.8

建立使用者

建議建立一個單獨的使用者Hadoop以從Unix檔案系統隔離Hadoop檔案系統

$ useradd hadoop
$ passwd hadoop
New password: 
Retype new password: 
複製程式碼

授權 root 許可權,在root下面加一條hadoophadoop ALL=(ALL) ALL

$ chmod 777 /etc/sudoers
$ vi /etc/sudoers
root    ALL=(ALL)       ALL
hadoop  ALL=(ALL)       ALL
$ pkexec chmod 0440 /etc/sudoers
複製程式碼

免祕鑰登入

SSH 免祕鑰

CentOs7.3 Hadoop 使用者 ssh 免密登入

安裝

下載解壓

在 ndoe1 上操作

su hadoop
cd /home/hadoop/
wget https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-2.7.4/hadoop-2.7.4.tar.gz
tar -xzf hadoop-2.7.4.tar.gz
複製程式碼

環境變數

如果是對所有的使用者都生效就修改vi /etc/profile 檔案 如果只針對當前使用者生效就修改 vi ~/.bahsrc 檔案

sudo vi /etc/profile
複製程式碼
#hadoop
export PATH=${HADOOP_HOME}/bin:$PATH
export HADOOP_HOME=/home/hadoop/hadoop-2.7.4/
複製程式碼

使環境變數生效,執行 source /etc/profile使/etc/profile檔案生效

配置Hadoop

進入hadoop 配置檔案目錄

cd /home/hadoop/hadoop-2.7.4/etc/hadoop/
複製程式碼

編輯 hadoop-env.sh 檔案,找到 JAVA_HOME 改為 JDK 的安裝目錄

sudo vi hadoop-env.sh
複製程式碼
export JAVA_HOME=/lib/jvm
複製程式碼

修改 core-site.xml

開啟 core-site.xml檔案並對其進行編輯,如下圖所示。

vi core-site.xml
複製程式碼
<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://node1:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/home/hadoop/hadoop-2.7.4/tmp</value>
    </property>
</configuration>
複製程式碼

修改 hdfs-site.xml

開啟hdfs-site.xml檔案並對其進行編輯,如下圖所示。

vi hdfs-site.xml
複製程式碼
<configuration>
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>node1:50090</value>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/home/hadoop/hadoop-2.7.4/tmp/dfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/home/hadoop/hadoop-2.7.4/tmp/dfs/data</value>
    </property>
</configuration>
複製程式碼

修改 mapred-site.xml

目錄下麼沒有這個檔案,這有一個模板,我們需要先拷貝一份

 cp mapred-site.xml.template mapred-site.xml
 vi mapred-site.xml
複製程式碼
<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>node1:10020</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>node1:19888</value>
    </property>
</configuration>
複製程式碼

修改 yarn-site.xml

vi yarn-site.xml
複製程式碼
<configuration>
    
    <!-- Site specific YARN configuration properties -->
    
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>node1</value>
    </property>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
</configuration>
複製程式碼

配置叢集

複製節點

將 hadoop-2.7.4 資料夾重打包後複製到其他子節點

cd /home/hadoop/

tar zcvf hadoop.tar.gz hadoop-2.7.4
scp hadoop.tar.gz hadoop@node2:/home/hadoop/
scp hadoop.tar.gz hadoop@node3:/home/hadoop/
複製程式碼

在其他子節點 解壓

tar -xzf hadoop.tar.gz
複製程式碼

配置slaves檔案

修改(Master主機)node1/etc/hadoop/slaves該檔案指定哪些伺服器節點是datanode節點。刪除locahost,新增所有datanode節點的主機名

cd /home/hadoop/hadoop-2.7.4/etc/hadoop/

[hadoop@node1 hadoop]$ cat slaves 
node2
node3
複製程式碼

叢集操作

Format

格式化namenode和datanode並啟動,(在master上執行就可以了 不需要在slave上執行)

cd /home/hadoop/hadoop-2.7.4/bin

./hadoop namenode -format
./hadoop datanode -format
複製程式碼

啟動 hadoop

關閉防火牆

systemctl stop firewalld.service
複製程式碼
cd /home/hadoop/hadoop-2.7.4/sbin


./start-dfs.sh
./start-yarn.sh
./mr-jobhistory-daemon.sh start historyserver
複製程式碼

或者

./start-all.sh

./mr-jobhistory-daemon.sh start historyserver
複製程式碼

檢視程式服務

檢視啟動程式,缺少以下任一程式都表示出錯

$ jps
2528 NameNode
2720 SecondaryNameNode
3190 Jps
2872 ResourceManager
3151 JobHistoryServer
複製程式碼

檢視埠占用情況

netstat -tnlp | grep java
複製程式碼

訪問node1

http://192.168.252.121:50070

http://192.168.252.121:8088

Hadoop-2.7.4 叢集快速搭建

Hadoop-2.7.4 叢集快速搭建

Hadoop-2.7.4 叢集快速搭建

停止 hadoop

cd /home/hadoop/hadoop-2.7.4/sbin

./stop-all.sh
複製程式碼

或者 jps 檢視程式kill

Contact

  • 作者:鵬磊
  • 出處:www.ymq.io
  • Email:admin@souyunku.com
  • 版權歸作者所有,轉載請註明出處
  • Wechat:關注公眾號,搜雲庫,專注於開發技術的研究與知識分享

關注公眾號-搜雲庫
搜雲庫

相關文章