『實踐』VirtualBox 5.1.18+Centos 6.8+hadoop 2.7.3搭建hadoop完全分散式集群

来源:http://www.cnblogs.com/landiljy/archive/2017/06/05/6946116.html
-Advertisement-
Play Games

『實踐』VirtualBox 5.1.18+Centos 6.8+hadoop 2.7.3搭建hadoop完全分散式集群 1.基本設定和軟體版本 主機名 ip 對應角色 master 192.168.56.4 NameNode slave1 192.168.56.3 DataNode1 slave2 ...


『實踐』VirtualBox 5.1.18+Centos 6.8+hadoop 2.7.3搭建hadoop完全分散式集群

1.基本設定和軟體版本

主機名

ip

對應角色

master

192.168.56.4

NameNode

slave1

192.168.56.3

DataNode1

slave2

192.168.56.5

DataNode2

  • Windows主機設置的ip為192.168.56.88
  • hadoop壓縮包解壓地址:/usr/local/hadoop
  • 虛擬機用戶都為ljy
  • VirtualBox-5.1.18、CentOS-6.8、hadoop-2.7.3.tar.gz、jdk1.7.0_79,且都是64位版本。
  • Centos6.8:鏈接:http://pan.baidu.com/s/1qYdjAY4 密碼:7gxm
  • 此處連接方式使用Host-only模式,虛擬機不能聯網;如使用網路地址轉換(NAT),虛擬機可以聯網。

 

圖1 Host-Only

 

圖2 windows ip

2.VirtualBox安裝Centos6.8

    這個網上教程太多,這裡不詳細介紹了。

3.FileZilla

    FileZilla是一款免費開源的ftp軟體,此處用於Windows電腦和Centos虛擬機之間互傳文件。

 

圖3 FileZilla

4.安裝jdk1.7.0-79

  • l 查看系統自帶的jdk並將其全部卸載:rpm -qa | grep jdk
  • l 下載jdk包,並將其解壓到/usr/java路徑下。
  • l 配置全局java環境變數(以root用戶執行):vim /etc/profile
  • l 在profile中的添加以下內容:
  1. export JAVA_HOME=/usr/java/jdk1.7.0_79
  2. export JRE_HOME=/usr/java/jdk1.7.0_79/jre
  3. export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
  4. export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
  • l 使profile配置生效:source /etc/profile
  • l 檢測已經安裝的jdk:java -version
  • l 註意:其他DataNode執行上述同樣操作。

 

圖4  /etc/profile文件中添加的內容

 

圖5 安裝的jdk

5.設置NameNode的ip

方法一:

  • l 切換到root,輸入密碼:su
  • l 進入設置界面:setup
  • l 選擇網路設置
  • l 選擇設備設置
  • l 選擇eth0
  • l 進行網路配置
  • l 註意:其他DataNode執行上述同樣操作。

 

圖6 選擇網路設置

 

圖7 選擇設備設置

 

圖8 選擇eth0

 

圖9 NameNode的網路設置

方法二:

  • l 打開網路連接,直接設置

 

圖10 網路連接設置

方法三:

  • l 編輯eth0文件:sudo vim /etc/sysconfig/network-scripts/ifcfg-eth0
  • l 在文件中修改BOOTPROTO=static,添加IPADDR、NETMASK和GATEWAY。

 

圖11 配置eth0

 

圖12 windows電腦ping通NameNode

6.給用戶增加sudo許可權(此處用戶名為ljy)

  • l 切換到root,輸入密碼:su
  • l 給sudoers增加寫許可權:chmod u+w  /etc/sudoers
  • l 編譯sudoers文件:vim  /etc/sudoers 
  • l 在#%wheel ALL=(ALL)  NOPASSWD: ALL下方增加 xxx   ALL=(ALL)  NOPASSWD: ALL,註意xxx為用戶,此處為ljy
  • l 去掉sudoers文件的寫許可權:chmod u-w /etc/sudoers
  • l 註意:其他DataNode執行上述同樣操作。

 

圖13 /etc/sudoers文件中增加的語句

 

7.配置每台機器的機器名和對應IP

  • l 編輯hosts文件:sudo vim /etc/hosts
  • l 編輯network文件,修改HOSTNAME為master:sudo vim /etc/sysconfig/network,註意:此處例子master為NameNode機器的機器名。
  • l 使文件立即生效:source /etc/sysconfig/network
  • l 註意:其他DataNode執行上述同樣操作。只有/etc/sysconfig/network中的hostname需要改為對應機器的機器名,例如:slave1。

 

圖14 在/etc/hosts文件中添加的內容

 

圖15 /etc/sysconfig/network文件中修改HOSTNAME為master

 

圖16 修改機器名和對應IP

8.永久關閉防火牆

  • l 永久關閉防火牆,重啟後生效:chkconfig iptables off
  • l 即時性關閉防火牆,重啟後失效:service iptables stop 
  • l 此處執行這兩條語句就不用重啟了。
  • l 註意:其他DataNode執行上述同樣操作。

 

圖17 永久關閉防火牆

9.配置SSH免密碼登錄

  • 檢查是否安裝了ssh,若沒有安裝,則安裝(以下指令並非都要執行):
  • l 檢查是否安裝ssh:rpm -qa| grep ssh 
  • l 查看ssh運行狀態:service sshd status
  • l 安裝ssh:yum install ssh
  • l 查看是否開機啟動:chkconfig --list sshd
  • l 設置開機啟動:chkconfig sshd on
  • l 註意:其他DataNode執行上述同樣操作。

 

圖18 設置ssh開機啟動

配置ssh免密碼登錄:

  • l 進入~/.ssh目錄:cd ~/.ssh
  • l 每台機器執行:ssh-keygen -t rsa,一路回車。
  • l 生成兩個文件,一個私鑰,一個公鑰,把id_rsa,pub文件追加到授權key(authorized_keys):cat  ~/.ssh/id_rsa.pub  >>  ~/.ssh/authorized_keys
  • l 通過ssh localhost命令登錄本機,首次時會讓輸入yes/no,但是不需要密碼:ssh localhost
  • l 如果目錄沒有通過NFS共用,需要利用此方法共用公鑰(此處是master把公鑰發給slave1,別的就類似互相共用):ssh-copy-id slave1。
  • l 註意:其他DataNode執行上述同樣操作。

 

圖19 ssh-keygen -t rsa命令執行後~/.ssh文件中

 

圖20 設置ssh無密碼登錄

 

圖21 master把公鑰發送給slave1

 

10.安裝hadoop 2.7.3

  • l 轉換到用戶ljy下:su - ljy
  • l 獲取管理員許可權:su
  • l 輸入管理員密碼:
  • l 新建hadoop文件夾:mkdir  /usr/local/hadoop 
  • l 將hadoop包移動到hadoop文件夾中:mv  /home/ljy/下載/hadoop-2.7.3.tar.gz  /usr/local/hadoop
  • l 移動到hadoop文件中:cd  /usr/local/hadoop
  • l 解壓hadoop包:tar  zxvf  hadoop-2.7.3.tar.gz
  • l 將hadoop-2.7.3重命名為hadoop: mv  hadoop-2.7.3  hadoop
  • l 註意:其他DataNode執行上述同樣操作。

將hadoop文件的擁有者改為ljy用戶和組

  • l 引動到hadoop解壓的路徑:cd /usr/local/hadoop
  • l 將hadoop文件的擁有者改為ljy用戶:sudo chown -R ljy:ljy hadoop
  • l 查看/hadoop目錄下所有用戶屬於ljy的文件或者文件夾:find /hadoop -user ljy

配置環境變數

  • l 編輯/etc/profile文件:vim /etc/profile
  • l 在profile文件中添加的內容:export HADOOP_HOME=/usr/local/hadoop/hadoop、export PATH=$HADOOP_HOME/bin:$PATH
  • l 使環境變數生效:source /etc/profile
  • l 註意:其他DataNode執行上述同樣操作。

 

圖22 hadoop文件夾中的文件目錄

 

圖23 /etc/profile文件中添加的內容

配置Hadoop:

  • l 移動到hadoop配置文件路徑:cd  /usr/local/hadoop/hadoop/etc/hadoop
  • l 查看當前文件夾中的文件目錄:ls

 

圖24 hadoop配置文件夾中的文件目錄

  • l 配置hadoop-env.sh:export JAVA_HOME=/usr/java/jdk1.7.0_79
  • l 添加masters,內容為slave1:vim masters
  • l 配置通用屬性:vim core-site.xml
 1  <configuration>  
 2 
 3       <property>  
 4 
 5         <!-- NameNode 地址 -->
 6 
 7         <name>fs.defaultFS</name>  
 8 
 9         <value>hdfs://master:9000</value>  
10 
11       </property>  
12 
13       <property>  
14 
15         <!-- 臨時目錄設定 -->
16 
17         <name>hadoop.tmp.dir</name>  
18 
19         <value>file:/usr/local/hadoop/hadoop/tmp</value>  
20 
21       </property>  
22 
23       <property>
24 
25         <name>fs.checkpoint.period</name>
26 
27         <value>3600</value>
28 
29       </property>
30 
31       <property>
32 
33         <name>fs.checkpoint.size</name>  //以日誌大小間隔  做備份間隔
34 
35         <value>67108864</value>
36 
37         </property>
38 
39 </configuration>  

 

圖25 core-site.xml配置內容

  • l 配置HDFS屬性:vim hdfs-site.xml
 1  <configuration>  
 2 
 3      <property>
 4 
 5        <name>dfs.namenode.secondary.http-address</name>
 6 
 7        <value>slave1:50090</value>
 8 
 9       //註意:此處機器名要為另一個。
10 
11      </property>
12 
13      <property>
14 
15        <name>dfs.http.address</name>
16 
17        <value>master:50070</value>
18 
19      </property>
20 
21      <property>
22 
23        <!-- 預設的塊複製數量,預設為3 -->  
24 
25        <name>dfs.replication</name>  
26 
27        <value>2</value>  
28 
29      </property>  
30 
31      <property>  
32 
33        <!-- 存貯在本地的名位元組點數據鏡象的目錄,作為名位元組點的冗餘備份 -->
34 
35        <name>dfs.namenode.name.dir</name>  
36 
37        <value>file:/usr/local/hadoop/hadoop/hdfs/name</value>  
38 
39      </property>  
40 
41      <property> 
42 
43        <!-- 數據節點的塊本地存放目錄 -->
44 
45        <name>dfs.datanode.data.dir</name>  
46 
47        <value>file:/usr/local/hadoop/hadoop/hdfs/data</value>  
48 
49      </property>  
50 
51    </configuration> 

 

圖26 hdfs-site.xml配置內容

  • l 複製mapred-site.xml.template並重命名為mapred-site.xml:cp mapred-site.xml.template mapred-site.xml
  • l 配置MapReduce屬性:vim mapred-site.xml
 1  <configuration>
 2 
 3     <property>
 4 
 5       <name>mapreduce.framework.name</name>
 6 
 7       <value>yarn</value>
 8 
 9 </property>
10 
11     <property>
12 
13       <name>mapreduce.jobhistory.address</name>
14 
15       <value>master:10020</value>
16 
17     </property>
18 
19     <property>
20 
21        <name>mapreduce.jobhistory.webapp.address</name>
22 
23        <value>master:19888</value>
24 
25     </property>
26 
27   </configuration>

圖27 mapred-site.xml配置內容

 

圖28 配置core-site.xml、hdfs-site.xml、mapred-site.xml

  • l 配置yarn-site.xml:vim yarm-site.xml
 1  <configuration>   
 2 
 3     <!-- Site specific YARN configuration properties -->  
 4 
 5     <property>  
 6 
 7       <name>yarn.nodemanager.aux-services</name>  
 8 
 9       <value>mapreduce_shuffle</value>  
10 
11     </property>  
12 
13 <property>             
14 
15   <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>  
16 
17       <value>org.apache.hadoop.mapred.ShuffleHandler</value>  
18 
19     </property>  
20 
21     <property>  
22 
23       <name>yarn.resourcemanager.address</name>  
24 
25       <value>master:8032</value>  
26 
27     </property>  
28 
29     <property>  
30 
31       <name>yarn.resourcemanager.scheduler.address</name>  
32 
33       <value>master:8030</value>  
34 
35     </property>  
36 
37     <property>  
38 
39       <name>yarn.resourcemanager.resource-tracker.address</name>  
40 
41       <value>master:8031</value>  
42 
43     </property>  
44 
45     <property>  
46 
47       <name>yarn.resourcemanager.admin.address</name>  
48 
49       <value>master:8033</value>  
50 
51     </property>  
52 
53     <property>  
54 
55       <name>yarn.resourcemanager.webapp.address</name>  
56 
57       <value>master:8088</value>  
58 
59     </property>  
60 
61   </configuration>  

圖29 yarn-site.xml配置內容

 

  • l 配置slaves:vim slaves

slave1

slave2

 

11.複製NameNode作為DataNode

 

圖30 NameNode和DataNode

  • l 複製master,並重命名為slave1和slave2。
  • l 運行slave2,將hostname改為slave2。
  • l 將網路連接的ip改為192.168.56.5。
  • l 對slave1的操作同對slave2的操作一樣。

圖31 master ping slave2

  • l master ping windows時,需要關閉windows的防火牆。

 

圖32 master ping windows

 

圖33 windows ping master

 

圖34 slave1 ping slave2

 

12.在master節點格式化hdfs

  • l 到bin路徑下:cd /usr/local/hadoop/hadoop/bin
  • l Hadoop初始化:hdfs namenode -format

 

13.啟動HDFS和YARN

  • l 到sbin路徑下:lcd /usr/local/hadoop/hadoop/sbin
  • l 啟動全部服務:start-all.sh
  • l 查看:jps
  • 通過瀏覽器的方式驗證:
  • http://192.168.56.4:50070 (HDFS管理界面)

 

圖35 HDFS管理界面

 

圖36 YARN管理界面

 

14.參考文獻

安裝java1.6     http://www.cnblogs.com/ssslinppp/p/5923298.html

CentOS常用的文件操作命令總結: http://www.haorooms.com/post/centeros_wj_zj

Linux給用戶添加sudo許可權  :http://blog.chinaunix.net/uid-25305993-id-126661.html

 yarn-site.xml參數設置: http://blog.csdn.net/xiaoshunzi111/article/details/51221139

VirtualBox虛擬機網路環境解析和搭建-NAT、橋接、Host-Only、Internal、埠映射 :http://blog.csdn.net/yxc135/article/details/8458939

hadoop(2.x)以hadoop2.2為例完全分散式最新高可靠安裝文檔:  http://www.aboutyun.com/thread-7684-1-1.html

Hadoop之Secondary NameNode :  http://blog.csdn.net/zwto1/article/details/50839191

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • “事件”這個詞已經被濫用了。正因為“事件”的被濫用,很多人在用到事件的時候不求甚解,依樣畫葫蘆,導致學習工作了很多年,還是不清楚什麼是事件處理器、什麼是事件持有者。所以,如果你對於Event這個詞還是心存恐懼,那麼本文正是你需要的。讓我們從易到難,從具體到抽象,一步一步來解釋java事件處理機制。 ... ...
  • 本文只註重代碼上傳能成功就好,不解釋什麼是git什麼事github,git有什麼優勢。 1,先創建一個android應用, 第二步:創建github賬戶 和 安裝git。網上的文章多如牛毛。唯一要說的就是記住安裝目錄。 第三步:android studio中配置git和github賬戶。 有了上面兩 ...
  • Web Configuring Your .npmrc for an Optimal Node.js Environment Web Developer Security Checklist HTTPS on Stack Overflow: The End of a Long Road TypeSc... ...
  • Fiddler抓包神器使用教程 掃盲篇 轉載請標明出處:http://blog.csdn.net/zhaoyanjun6/article/details/72823370 本文出自 "【趙彥軍的博客】" 1、什麼是抓包? 不同主機之間的數據通信都是通過網路來進行傳輸,對那些在網路上傳輸的數據(發送、 ...
  • 使用的插件參照地址:https://github.com/xu-li/cordova-plugin-wechat;(這裡包含微信登錄,微信分享和微信支付) 插件安裝 cordova plugin add cordova-plugin-wechat --variable wechatappid=YOU ...
  • 緩存組件應該說是每個客戶端程式必備的核心組件,試想對於每個界面的訪問都必須重新請求勢必降低用戶體驗。但是如何處理客戶端緩存貌似並沒有統一的解決方案,多數開發者選擇自行創建資料庫直接將伺服器端請求的JSON(或Model)緩存起來,下次請求則查詢資料庫檢查緩存是否存在;另外還有些開發者會選擇以歸檔文件... ...
  • 檢查 minSdkVersion什麼的是不是和你依賴的包一樣,它上面也有個小提示,顯示本地的11,依賴的為15,那就改成15好了,重新build好了 ClassNotFoundException異常 看提示信息貌似是配置文件的路徑或者什麼錯了,其實就是你的v7包之類的版本不對,要跟sdk版本一致或者 ...
  • 目錄 一、MySQL概述 二、下載安裝 三、資料庫操作 四、數據表操作 五、表內容操作 一、MySQL概述 MySQL是一個關係型資料庫管理系統,由瑞典MySQL AB 公司開發,目前屬於 Oracle 旗下產品。MySQL 是最流行的關係型資料庫管理系統之一,在 WEB 應用方面,MySQL是最好 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...