小數據| Hadoop集羣搭建


前言

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

在這裏插入圖片描述


域名設置

爲了方便文件傳輸總得標記一個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

在這裏插入圖片描述
注意,如果域名設置好了之後,後邊想更改機器時,比如把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 root@node1:~/.ssh/

scp ~/.ssh/authorized_keys root@node2:~/.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

在這裏插入圖片描述

source /etc/profile

配置

創建hdfs

創建我們的HDFS(hadoop file system)文件系統。數據存儲於該位置。
在這裏插入圖片描述
進入hdfs文件,分別創建如下目錄:

name    存儲namenode文件
data    存儲數據
tmp     存儲臨時文件 

在這裏插入圖片描述

修改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的標記)
在這裏插入圖片描述

core-site.xml

注意,name屬性不是想設置啥就設置啥的,它們是經過專業訓練的,一開始傻傻的設置了一套,結果啓動一直不行,重新改了回來,後來想想就覺得搞笑,如果可以隨便設置的話,那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

在這裏插入圖片描述

<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

在這裏插入圖片描述

<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-env.sh

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

在這裏插入圖片描述

slaves

主要配置從節點的主機名,也就是node1和node2:
在這裏插入圖片描述


發送

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

scp -r hadoop-2.10.0 root@node1:/hadoop/

scp -r hadoop-2.10.0 root@node1:/hadoop/

啓動

格式化

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

hadoop namenode -format

在這裏插入圖片描述

拓展


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。
    在這裏插入圖片描述
  4. Version :記錄了集羣的信息,如上圖所示,它的信息有namespaceID/clusterID/blockpoolID

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

cTime 存儲系統創建時間,首次格式化文件系統爲 0,當文件系統升級之後,該值會更新到升級之後的時間戳。


啓動集羣

start-all.sh

master啓動上述指令,輸入JPS查看master進程
在這裏插入圖片描述
node節點輸入jps查看進程
在這裏插入圖片描述

輸入master網址,默認端口50070 http://192.168.0. 28:50070/

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章