天天看點

小資料| Hadoop叢集搭建前言搭建

Hadoop叢集搭建

  • 前言
  • 搭建
    • 域名設定
    • 伺服器免密登入
    • 下載下傳
    • 配置
      • 建立hdfs
      • 修改XML檔案
        • core-site.xml
        • hdfs-site.xml
        • mapred-site.xml
        • yarn-site.xml
        • hadoop-env.sh
        • slaves
      • 發送
      • 啟動
        • 格式化
        • 拓展
        • 啟動叢集

前言

hadoop叢集搭建一般都采用3條伺服器來演練,為什麼是3呢?之前以為跟redis類似,由主從投票政策決定,後來想了想應該不是,因為主節點是nameNode節點,而從節點是dataNode節點,你的從節點在此時更新為master也沒用吧。。。

後邊找到一些資料說是跟hadoop的副本政策有關系,預設為3。是以,伺服器數量小于3,意味着一台機器至少存有2個副本,大于3對于目的隻是模拟測試來說、又有點浪費。。

搭建

hadoop不同版本似乎有些差别,下面是搭建的基本環境:

官網下載下傳連結

  1. 本文采用Hadoop 2.10.0版本
  2. CentOS Linux release 7.6.1810 (Core)
  3. 3台伺服器(一台master、兩台salve)
  4. 已安裝JDK1.8
hadoop version
           
小資料| Hadoop叢集搭建前言搭建

域名設定

為了友善檔案傳輸總得标記一個ip,采用域名可以減少這種麻煩。

在3台機器的hosts檔案輸入如下内容:

192.168.0.28   master
192.168.0.14   node2
192.168.0.23   node1
           

在master機器的hostname檔案中輸入如下内容,slave節點的機器的hostname檔案則分别輸入node1、node2

master
           
小資料| Hadoop叢集搭建前言搭建

注意,如果域名設定好了之後,後邊想更改機器時,比如把ndoe2配置設定給其他機器,此時可能因為DNS緩存設定不成功。

service nscd restart
           

伺服器免密登入

master連接配接slave節點時如果需要密碼,可能連接配接會失敗,是以需要設定下免密登入:

安裝openssh-server服務

yum install openssh-server
           

master伺服器輸入以下指令一直回車,生成公鑰和私鑰:

ssh-keygen -t rsa
           

在master上将公鑰放入authorized_keys(linux 作業系統下,專門用來存放公鑰的地方,隻要公鑰放到了伺服器的正确位置,并且擁有正确的權限,你才可以通過你的私鑰,免密登入linux伺服器),指令如下

cat ~/.ssh/id_rsa.pub > ~/.ssh/authorized_keys
           

發送公鑰到node1、node2節點上,然後在master主機上試試

ssh node1

或者

ssh node2

能不能成功。一開始可能還會提示輸入一遍密碼,後邊就不用了

scp ~/.ssh/authorized_keys [email protected]:~/.ssh/

scp ~/.ssh/authorized_keys [email protected]:~/.ssh
           

下載下傳

最好将下載下傳的包移動到一個差別其他目錄的目錄。

wget https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-2.10.0/hadoop-2.10.0.tar.gz
           

解壓

tar zxvf hadoop-2.10.0.tar.gz 
           

添加hadoop檔案路徑到配置檔案中:

export PATH=$PATH:/hadoop/hadoop-2.10.0/bin:/hadoop/hadoop-2.10.0/sbin
           
小資料| Hadoop叢集搭建前言搭建
source /etc/profile
           

配置

建立hdfs

建立我們的HDFS(hadoop file system)檔案系統。資料存儲于該位置。

小資料| Hadoop叢集搭建前言搭建

進入hdfs檔案,分别建立如下目錄:

name    存儲namenode檔案
data    存儲資料
tmp     存儲臨時檔案 
           
小資料| Hadoop叢集搭建前言搭建

修改XML檔案

  1. core-site.xml
  2. hdfs-site.xml
  3. mapred-site.xml
  4. yarn-site.xml
  5. hadoop-env.sh
  6. slaves

上述檔案都在hadoop的

etc/hadoop/

目錄中:(圖中漏了一個slaves的标記)

小資料| Hadoop叢集搭建前言搭建

core-site.xml

注意,name屬性不是想設定啥就設定啥的,它們是經過專業訓練的,一開始傻傻的設定了一套,結果啟動一直不行,重新改了回來,後來想想就覺得搞笑,如果可以随便設定的話,那hadoop啟動掃描時豈不是得有很多繁瑣的判斷。

小資料| Hadoop叢集搭建前言搭建
<configuration>
   <property>
      <name>fs.default.name</name>
      <value>hdfs://master:8000</value>
   </property>
   <property>
      <name>hadoop.tmp.dir</name>
      <value>/hadoop/hadoop-2.10.0/hdfs/tmp</value>
   </property>
</configuration>
           

hdfs-site.xml

小資料| Hadoop叢集搭建前言搭建
<configuration>
  <property>
      <name>hdfs.replication</name>
      <value>3</value>
   </property>

   <property>
      <name>dfs.name.dir</name>
      <value>/hadoop/hadoop-2.10.0/hdfs/name</value>
   </property>

   <property>
      <name>dfs.data.dir</name>
      <value>/hadoop/hadoop-2.10.0/hdfs/data</value>
   </property>

   <property>
      <name>dfs.permissions</name>
      <value>false</value>
   </property>
</configuration>
           

mapred-site.xml

小資料| Hadoop叢集搭建前言搭建
<configuration>
   <property>
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
   </property>

</configuration>
           

yarn-site.xml

<configuration>

<!-- Site specific YARN configuration properties -->
   <property>
      <name>yarn.resourcemanager.hostname</name>
      <value>master</value>
   </property>

   <property>
      <name>yarn.nodemanager.aux-service</name>
      <value>mapreduce_shuffle</value>
   </property>

   <property>
      <name>yarn.nodemanager.vmem-check-enabled</name>
      <value>false</value>
   </property>

</configuration>
           
小資料| Hadoop叢集搭建前言搭建

hadoop-env.sh

這個檔案主要配置了JDK的路徑,注意!待會會将hadoop所有檔案發送到從節點上,如果從節點的jdk路徑跟master節點不一樣,記得修改!!!

小資料| Hadoop叢集搭建前言搭建

slaves

主要配置從節點的主機名,也就是node1和node2:

小資料| Hadoop叢集搭建前言搭建

發送

将hadoop整個目錄發送至node1和node2節點上:

scp -r hadoop-2.10.0 [email protected]:/hadoop/

scp -r hadoop-2.10.0 [email protected]:/hadoop/
           

啟動

格式化

master運作如下指令,格式化後,name目錄會多出current目錄。

hadoop namenode -format
           
小資料| Hadoop叢集搭建前言搭建

拓展

Current:裡面包含edits、fsimage、seen_txid、VERSION檔案。

  1. edits 日志檔案:用戶端執行寫操作會先寫入edits日志,并且在記憶體中保留。
  2. fsimage檔案:nameNode的鏡像檔案,每次checkpoing(合并所有edits到一個fsimage的過程)産生的最終的fsimage,同時會生成一個.md5的檔案用來對檔案做完整性校驗。
  3. Seen_txid :非常重要,代表namenode的edits*檔案尾數,namenode重新開機時會循序從頭跑 edits_0000001~到 seen_txid 的數字。但format格式化之後會是0。
    小資料| Hadoop叢集搭建前言搭建
  4. Version :記錄了叢集的資訊,如上圖所示,它的資訊有namespaceID/clusterID/blockpoolID。

在叢集中,會有多個 NameNode 獨立工作,每個NameNode 提供唯一的命名空(namespaceID),并管理一組唯一的檔案塊池(blockpoolID)。

cTime 存儲系統建立時間,首次格式化檔案系統為 0,當檔案系統更新之後,該值會更新到更新之後的時間戳。

啟動叢集

start-all.sh
           

master啟動上述指令,輸入JPS檢視master程序

小資料| Hadoop叢集搭建前言搭建

node節點輸入jps檢視程序

小資料| Hadoop叢集搭建前言搭建

輸入master網址,預設端口50070 http://192.168.0. 28:50070/

小資料| Hadoop叢集搭建前言搭建

繼續閱讀