Hadoop2.8分散式集群安裝與測試

来源:http://www.cnblogs.com/samits/archive/2017/09/12/7512752.html
-Advertisement-
Play Games

1.hadoop2.x 概述 hadoop2中NameNode可以有多個(目前只支持2個)。每一個都有相同的職能。一個是active狀態的,一個是standby狀態的。當集群運行時,只有active狀態的NameNode是正常工作的,standby狀態的NameNode是處於待命狀態的,時刻同步ac ...


1.hadoop2.x 概述

hadoop2NameNode可以有多個(目前只支持2個)。每一個都有相同的職能。一個是active狀態的,一個是standby狀態的。當集群運行時,只有active狀態的NameNode是正常工作的,standby狀態的NameNode是處於待命狀態的,時刻同步active狀態NameNode的數據。一旦active狀態的NameNode不能工作,standby狀態的NameNode就可以轉變為active狀態的,就可以繼續工作了。

2NameNode的數據其實是實時共用的。新HDFS採用了一種共用機制,Quorum Journal NodeJournalNode)集群或者Network File SystemNFS)進行共用。NFS是操作系統層面的,JournalNodehadoop層面的,我們這裡使用JournalNode集群進行數據共用(這也是主流的做法)。JournalNode的架構圖如下:

   

兩個NameNode為了數據同步,會通過一組稱作JournalNodes的獨立進程進行相互通信。當active狀態的NameNode的命名空間有任何修改時,會告知大部分的JournalNodes進程。standby狀態的NameNode有能力讀取JNs中的變更信息,並且一直監控edit log的變化,把變化應用於自己的命名空間。standby可以確保在集群出錯時,命名空間狀態已經完全同步了。

對於HA集群而言,確保同一時刻只有一個NameNode處於active狀態是至關重要的。否則,兩個NameNode的數據狀態就會產生分歧,可能丟失數據,或者產生錯誤的結果。為了保證這點,這就需要利用使用ZooKeeper了。首先HDFS集群中的兩個NameNode都在ZooKeeper中註冊,當active狀態的NameNode出故障時,ZooKeeper能檢測到這種情況,它就會自動把standby狀態的NameNode切換為active狀態。來自 <http://www.jianshu.com/p/a1d3028f3e27>

   

   

   

   

Hadoop安裝分為三種方式,分別為單機、偽分散式、完全分散式,安裝過程不難,在此主要詳細敘述完全分散式的安裝配置過程,畢竟生產環境都使用的完全分散式,前兩者作為學習和研究使用。按照下述步驟一步一步配置一定可以正確的安裝Hadoop分散式集群環境。

   

2、搭建

2.1 網路環境

No.

Host Name

IP Address

Node Type

User Name

1

Maser

192.168.1.106

Name Node

hadoop/root

2

Slave1

192.168.1.107

Data Node

hadoop/root

3

Slave2

192.168.1.108

Data Node

hadoop/root

   

2.2、軟硬體環境

Centos7.3

Java-1.8.0-openjdk

Hadoop 2.8.1

   

2.3、環境搭建

All nodes are disabled SELinux and firewalld

All nodes can ping with each other

All nodes have same hadoop directory structure and a same user account

Create a hadoop user, home directory is /home/hadoop, add into root group.

hadoop directory is /usr/local/hadoop, directory owner is hadoop

Master node and slave node can SSH with no password publick key authentication

All nodes have same /etc/hosts, add master node and slave node record line

   

SSH採用了公鑰加密。過程如下: 

(1)遠程主機收到用戶的登錄請求,把自己的公鑰發給用戶。 

(2)用戶使用這個公鑰,將登錄密碼加密後,發送回來。 

(3)遠程主機用自己的私鑰,解密登錄密碼,如果密碼正確,就同意用戶登錄。

   

3、安裝配置java

3.1、安裝Java

安裝JDK以及配置環境變數,需要以"root"的身份進行

# yum search jdk

# yum -y install java-1.8.0-openjdk*

   

3.2、配置java環境

新建配置文件etc/profile/java.sh

export JAVA_HOME=/usr/lib/jvm/java

export JRE_HOME=${JAVA_HOME}/jre

export CLASSPATH=.:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar:${JRE_HOME}/lib

export HADOOP_HOME=/usr/local/hadoop

export PATH=.:$PATH:${JAVA_HOME}/bin:${JRE_HOME}/bin:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin

   

3.3、驗證

# java -version

# javac -version

   

4、 安裝配置hadoop

4.1 安裝

# cd /usr/local/src

# wget http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.8.1/hadoop-2.8.1.tar.gz

# tar -vxzf hadoop-2.8.1

# mv hadoop-2.8.1 ../hadoop

# chown -R hadoop:hadoop hadoop

   

4.2 配置 hadoop 環境

/etc/profile.d/java

   

4.3.2 創建hadoop子目錄

# cd /usr/local/hadoop

# mkdir tmp hdfs

# cd hdfs

# mkdir name tmp data

   

4.3 hadoop 配置文件

進入到$HADOOP_HOME/etc/hadoop目錄修改配置文件,配置項可參考文檔http://hadoop.apache.org/docs/r2.8.0/

   

4.3.1 hadoop-env.sh

驗證

   

4.3.2 core-site.xml

<configuration>

<property>

<name>hadoop.tmp.dir</name>

<value>/usr/local/hadoop/tmp</value>

<final>true</final>

<!--(備註:請先在 /usr/hadoop 目錄下建立 tmp 文件夾) -->

<description>A base for other temporary directories.</description>

</property>

<property>

<name>fs.default.name</name>

<value>hdfs://master:9000</value>

<!-- hdfs://Master.Hadoop:22-->

<final>true</final>

</property>

<property>

<name>io.file.buffer.size</name>

<value>131072</value>

</property>

</configuration>

   

4.3.3 hdfs-site.xml

<configuration>

<property>

<name>dfs.replication</name>

<value>2</value>

</property>

<property>

<name>dfs.name.dir</name>

<value>/usr/local/hadoop/hdfs/name</value>

</property>

<property>

<name>dfs.data.dir</name>

<value>/usr/local/hadoop/hdfs/data</value>

</property>

<property>

<name>dfs.namenode.secondary.http-address</name>

<value>master.hadoop:9001</value>

</property>

<property>

<name>dfs.webhdfs.enabled</name>

<value>true</value>

</property>

<property>

<name>dfs.permissions</name>

<value>false</value>

</property>

</configuration>

   

4.3.4 mapred-site.xml

<configuration>

<property>

<name>mapreduce.framework.name</name>

<value>yarn</value>

</property>

</configuration>

   

4.3.5 yarn-site.xml

<configuration>

<!-- Site specific YARN configuration properties -->

<property>

<name>yarn.resourcemanager.address</name>

<value>Master.Hadoop:18040</value>

</property>

<property>

<name>yarn.resourcemanager.scheduler.address</name>

<value>Master.Hadoop:18030</value>

</property>

<property>

<name>yarn.resourcemanager.webapp.address</name>

<value>Master.Hadoop:18088</value>

</property>

<property>

<name>yarn.resourcemanager.resource-tracker.address</name>

<value>Master.Hadoop:18025</value>

</property>

<property>

<name>yarn.resourcemanager.admin.address</name>

<value>Master.Hadoop:18141</value>

</property>

<property>

<name>yarn.nodemanager.aux-services</name>

<value>mapreduce_shuffle</value>

</property>

<property>

<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>

<value>org.apache.hadoop.mapred.ShuffleHandler</value>

</property>

</configuration>

   

4.3.6 /usr/local/hadoop/etc/hadoop/masters 文件

/usr/local/hadoop/etc/hadoop/slaves

   

4.4 Slave node 上java/hadoop安裝與配置

4.4.1 java/openjdk安裝同master node

在master node上

scp /etc/profile.d/java.sh slave1:/etc/profile.d

scp /etc/profile.d/java.sh slave2:/etc/profile.d

4.4.2 Hadoop安裝

在master node上

scp -r /usr/local/hadoop slave1:/usr/local

scp -r /usr/local/hadoop slave1:/usr/local

4.4.3 改變許可權

chown -R hadoop:hadoop /usr/lib/jvm/java-1.8.0-openjdk-*

chown -R hadoop:hadoop /usr/local/hadoop

   

5、測試、驗證

5.1

$ hadoop namenode -format

   

$ start-all .sh

   

$ ps -ef |grep hadoop

   

$ jps

master (master)

   

   

   

slave1 (Secondary master)

   

slave2

   

5.2 通過網頁查看集群 

在本地訪問HDFS WebUI: http://8088:50070

YARN WebUI: http://master:8088

   

5.3 hadoop集群系統提交第一個mapreduce任務(wordcount)

5.3.1 cd /home/hadoop

$ cat >>test.txt<<EOF

Hello World

Hello World

Hello World

Hello World

   

5.3.2 進入本地hadoop目錄(/usr/local/hadoop

$ hdfs dfs -mkdir -p /data/input在虛擬分散式文件系統上創建一個測試目錄/data/input

$ hdfs dfs -put test.txt  /data/input  將當前目錄下的README.txt 文件複製到虛擬分散式文件系統中

$ hdfs dfs-ls /data/input    查看文件系統中是否存在我們所複製的文件

   

5.3.3  運行如下命令向hadoop提交單詞統計任務

進入jar文件目錄,執行下麵的指令。

$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar \

wordcount \

/data/input /data/output/result

   

查看result,結果在result下麵的part-r-00000

  


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

-Advertisement-
Play Games
更多相關文章
  • 同義詞和視圖 作用: 同義詞和視圖都是用來精簡語句 和 隱藏細節的 同義詞 --相當於別名/綽號/小名 為表創建別名: 1、可以簡化sql語句(可以取一個好聽的、容易記住的別名/綽號;其實呢,也可以弄得很複雜,就像取一個非常複雜的別名/綽號,隨你怎麼去取了); 2、可以隱藏細節(如果別人只知道我的綽 ...
  • 一、TIMESTAMP的變體 TIMESTAMP時間戳在創建的時候可以有多重不同的特性,如: 1.在創建新記錄和修改現有記錄的時候都對這個數據列刷新: 2.在創建新記錄的時候把這個欄位設置為當前時間,但以後修改時,不再刷新它: 3.在創建新記錄的時候把這個欄位設置為0,以後修改時刷新它: 4.在創建 ...
  • 要求:linux 安裝 mongo 3.4 大體上,按照官網提供的方法來做。 系統是ubuntu 16.04 安裝的是mongo3.4.8 社區版 1、 導入導入包管理系統使用的公鑰 # sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com: ...
  • --------------------------------------------------------------------- -- Inside Microsoft SQL Server 2008: T-SQL Querying (MSPress, 2009) -- Chapter 1... ...
  • 以後用法查詢1分鐘,太慢 以下union all優化方法 1)這種優化最快 2)EXISTS 或者 in 子查詢 ...
  • http://blog.csdn.net/z2872332/article/details/46633631 ...
  • 1.首先從https://www.mongodb.com/download-center#community 下載社區版,企業版也是類似。 2.雙擊運行安裝,可自定義安裝路徑,這裡採用預設路徑(C:\Program Files\MongoDB\Server\3.4) 一路下一步直至安裝完畢。 3.創 ...
  • 一、什麼是資料庫? 資料庫(Database)是按照數據結構來組織、存儲和管理數據的建立在電腦存儲設備上的倉庫。 簡單來說是本身可視為電子化的文件櫃——存儲電子文件的處所,用戶可以對文件中的數據進行新增、截取、更新、刪除等操作。 1、文件夾可視為資料庫; 2、excel可視為數據表; 3、一條記錄 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...