1. 程式人生 > >詳細Ubuntu系統下搭建Hadoop完全分散式

詳細Ubuntu系統下搭建Hadoop完全分散式

1.Hadoop的執行環境介紹

hadoop主要有三種執行模式:單機模式、偽分佈模式、完全分佈模式。

其中在單機模式下所有3個XML檔案均為空,當配置檔案為空時,Hadoop會完全執行在本地,因為不需要與其他節點互動,單機模式就不使用HDFS,也不載入任何Hadoop的守護程序。該模式主要用於開發除錯MapReduce程式的應用邏輯。

在偽分散式模式下是指在“單節點叢集”上執行Hadoop,其中所有的守護程序都執行在同一臺機器上,即Jobtracker、Tasktracker、Namenode、Datanode、Secondarynamenode程序都執行在同一臺主機上。該模式在單機模式之上增加了程式碼除錯功能,允許你檢查記憶體使用情況,HDFS輸入輸出,以及其他的守護程序互動。

完全分散式模式是將hadoop執行在了一個真正的叢集上,該叢集內含有一個主節點master,及至少兩個的從節點slave;其中主節點上主要執行Namenode、Jobtracker、Secondarynamenode程序,從節點主要執行Datanode、Tasketracker程序。這種模式下可以真正實現hadoop的分散式處理,有主節點對從節點的任務分配排程以及HDFS在主機間的輸入輸出。

2.叢集介紹

       之前我們在實驗課上已經搭建好了單機模式以及偽分散式,已在虛擬作業系統Ubuntu中安裝了SSH(安裝外殼協議),在搭建完全分散式模式時需要通過SSH來啟動Slave列表中各臺機器的守護程序。

       環境說明

       虛擬機器:VMware Workstation Pro

       作業系統:Ubuntu14.04

       hadoop版本:hadoop1.0.4

       節點資訊:

       192.168.191.91master

       192.168.191.101slave1

       192.168.191.111slave2

192.168.191.121 slave3

       jdk版本:jdk-7u80-linux-x64

hive版本:hive-0.9.0-bin

       mysql版本:mysql-5.5.45-linux2.6-x86_64.tar

2.實現各主機間的通訊

2.1VWare下的網路連線模式

2.1.1 本地模式(host-only)

       在host-only模式中,所有的虛擬系統是可以相互通訊的,但虛擬系統和真實的網路是被隔離開的。可以利用Windows 裡自帶的Internet連線共享(實際上是一個簡單的路由NAT)來讓虛擬機器通過主機真實的網絡卡進行外網的訪問。虛擬系統的TCP/IP配置資訊(如IP地址、閘道器地址、DNS伺服器等),都是由VMnet1(host-only)虛擬網路的DHCP伺服器來動態分配的。如果想利用VMware建立一個與網內其他機器相隔離的虛擬系統,進行某些特殊的網路除錯工作,可以選擇host-only模式。

2.1.2 NAT模式(網路地址轉換模式)

NAT模式下就是讓虛擬系統藉助NAT(網路地址轉換)功能,通過宿主機器所在的網路來訪問公網。也就是說,使用NAT模式可以實現在虛擬系統裡訪問網際網路。NAT模式下的虛擬系統的TCP/IP配置資訊是由VMnet8(NAT)虛擬網路的DHCP伺服器提供的,無法進行手工修改,因此虛擬系統也就無法和本區域網中的其他真實主機進行通訊。採用NAT模式最大的優勢是虛擬系統接入網際網路非常簡單,你不需要進行任何其他的配置,只需要宿主機器能訪問網際網路即可。如果你想利用VMware安裝一個新的虛擬系統,在虛擬系統中不用進行任何手工配置就能直接訪問網際網路,就可直接採用NAT模式。

2.1.3 橋接模式(bridge)

       在橋接模式下,VMware虛擬出來的作業系統就像是區域網中的一獨立的主機,它可以訪問網內任何一臺機器。不過你需要多於一個的IP地址,並且需要手工為虛擬系統配置IP地址、子網掩碼,而且還要和宿主機器處於同一網段,這樣虛擬系統才能和宿主機器進行通訊。該模式下可以利用VMware在區域網內新建一個虛擬伺服器,將虛擬機器模擬接入主機所在的區域網,便可為區域網使用者提供網路服務。

2.2橋接模式實現主機間通訊

       通過了解Ubuntu下的三種網路連線模式,為實現不同的虛擬主機間相互通訊,我們不可採取NAT模式,只能選擇橋接模式。因為在NAT模式下即使為各個虛擬主機設定靜態ip使其同在一個區域網內,也只能實現其訪問網際網路,而不能使本區域網中的主機相互通訊;而在橋接模式下,我們可以讓一臺計算機開啟共享wifi,其他主機連線到該路由器下,使各宿主機處於同一個區域網內,再為本機的虛擬主機設定靜態ip,ip地址要與宿主機處於同一網段,子網掩碼、閘道器要與宿主機的一致,至此各虛擬主機就處於同一區域網內了。以下是具體操作步驟:

   (1)更改Vmware網路連線模式

       在此之前還需要在宿主機的網路和共享中心中檢視此時所用網路的網絡卡,之前也提到了各宿主機連線到同一個路由器上,即此時網絡卡為本機的無線網絡卡(此處的宿主機作為路由器,也就選擇開啟共享wifi的對應網絡卡)


開啟虛擬機器編輯>虛擬網路編輯器>更改設定,將網路連線方式更改為橋接模式,網絡卡選取之前檢視到的部分;再更改虛擬機器>設定>網路介面卡,更改網路連線至此開啟虛擬機器。

       (2)設定靜態ip

       開始設定虛擬主機的靜態ip,主要需要配置這樣幾個檔案(注意需要使用之前就建立的hadoop使用者登陸)/etc/hostname用於更改虛擬主機的主機名,主節點為master,從節點分別改為slave1,slave2,slave3;/etc/hosts用於新增該區域網內的叢集中其他虛擬主機ip;/etc/network/interfaces用於設定靜態ip,預設閘道器為192.168.191.1,子網掩碼為255.255.255.0;/etc/resolv.cnf用於更改DNS 10.200.255.1;最後需要重啟網路,在終端輸入命令sudo /etc/init.d/networking restart.

由於虛擬機器中一般由NetworkManager接管網路,當我們配置了interfaces檔案和resolv.cnf檔案時,再重啟網路發現更改會還原,文件又被重寫了;此時就是設定靜態ip和NetworkManager兩者衝突了,導致網路連線失敗。此時需要將NetworkManager刪除掉,直接由靜態ip決定。

解除安裝NetworkManager需執行命令為:

sudo apt-getpurge network-manager

sudo apt-getpurge network-manager-gnome

若命令執行完畢後,桌面右上角沒有NetworkManager標誌後就表示解除安裝成功。

另外,更改DNS後每次重啟都會被重寫,若想要永久更改DNS地址需要編輯檔案/etc/resolvconf/resolv.conf.d/base,新增nameserver DNS地址。

至此,叢集已搭建成功,叢集內的虛擬主機可以和宿主機通訊,也能和叢集內的其他虛擬主機通訊,還能訪問外網

3.節點間ssh免密登陸

    在之前搭建單機模式和偽分散式時,我們已經安裝了ssh,並且為虛擬本機生成了一對金鑰,實現了虛擬本機的免密登陸。這裡,我們要實現的是使各節點間能夠免密登陸,免密通訊。具體做法是將各個slave從節點給主節點發送其公鑰,master將所有從節點的公鑰彙總到本機檔案~/.ssh/authorized_keys中,最後再由master將該檔案分發給各個從節點,進而實現各節點間免密登陸。

    slave端在終端執行命令ssh-copy-id -i ~/.ssh/id_rsa.pub master,表示給master傳送公鑰,master端在終端執行命令scp  ~/.ssh/[email protected]: ~/.ssh/authorized_keys,表示將由slave1傳送過來的公鑰儲存到master虛擬本機的authorized_keys中。

注意在登陸其他節點時,要保證各節點都是用hadoop使用者登陸虛擬機器。通過命令ssh master登陸master節點,在第一次登陸時需要輸入節點的登陸密碼,當第二次登陸時能直接登陸進去,表示設定ssh免密登陸成功。

4.安裝新版SUN JDK

       為實現更廣泛的功能,我們選擇重新安裝新版的sun jdk;在官網下載對應版本jdk-7u80-linux-x64.tar.gz後,解壓到目錄/usr/lib/jvm下,更改jdk後還需進行對應的環境變數設定,編輯檔案~/.bashrc或etc/profile,更新JAVA_HOME的路徑;同時還應在hadoop的環境變數配置中更改對應的JAVA_HOME,以免之後會出錯,即編輯該目錄下檔案中的環境變數/usr/local/hadoop/conf/hadoop-env.cnf

       至此,雖已安裝了新版的jdk,但是Ubuntu系統預設的jdk還是其自帶的openjdk,需要進一步設定,在終端執行下列命令將我們安裝的jdk加入java選擇單:

sudo update-alternatives --install /usr/bin/java java/usr/lib/jvm/jdk1.7.0_25/bin/java 300

sudo update-alternatives --install /usr/bin/javac javac/usr/lib/jvm/jdk1.7.0_25/bin/javac 300

       再執行命令,選擇系統預設的jdk,最後再檢視java版本,確定sunjdk是否安裝成功

sudo update-alternatives --config java 

sudo update-alternatives --config javac

5.hadoop配置

(1)配置master及slave

在每個節點中都要配置conf下的masters及slaves檔案為對應分配好的hostname

(2)配置*.xml

配置core-site.xml檔案時更改了兩項,預設dfs.name.dir、dfs.data.dir和mapred.system.dir均放在hadoop.tmp.dir下,這些資料夾存有NameNode和DataNode的資料和各種系統資料,而hadoop.tmp.dir卻預設放在/tmp/hadoop-${user.name},這意味著重啟之後這些東西很可能全都沒了。在正式的叢集中,這些子資料夾最好放在不依賴於hadoop.tmp.dir的地方。這裡為了方便,我們直接先修改hadoop.tmp.dir來改變其他子資料夾,將它放在hadoop安裝目錄的tmp資料夾,並且顯式指明預設的Namenode位置fs.default.name為master的9000埠。

       配置hdfs-site.xml,這裡修改dfs.replication即備份多少副本,1的話就是不備份。這個值不能超過Datanode的數目。

       配置mapred-site.xml,這裡指明所有的node在找jobtracker時都要去找master的9001埠。



6.1hive介紹

       hive是基於Hadoop的一個數據倉庫工具,可以將結構化的資料檔案對映為一張資料庫表,並提供簡單的sql查詢功能,可以將sql語句轉換為MapReduce任務進行執行。hive將元資料儲存在資料庫中,如mysql、derby。hive 中的元資料包括表的名字,表的列和分割槽及其屬性,表的屬性(是否為外部表等),表的資料所在目錄等,但是hive沒有專門的資料儲存格式,也沒有為資料建立索引,使用者可以非常自由的組織hive中的表;hive 的資料儲存在HDFS中,大部分的查詢由MapReduce完成。因此為方便儲存、查詢大量的資料,我們採用將hive和mysql連線起來。

5.2安裝mysql

       在搭建hadoop叢集時,已經實現每一個虛擬主機都可以訪問網際網路(作為路由器的主機除外),此種情況可以為線上安裝,在Ubuntu終端執行命令sudo apt-get install mysql-server直接獲取mysql安裝包;

       另外還有一種離線安裝,即到官網下載linux系統下的對應版本,再解壓到指定目錄下,這裡我們指定目錄為/usr/local/mysql,再通過命令sudo scripts/mysql_install_db --user=root安裝mysql,若有報錯則還需下載安裝一個依賴包libaio1_0.3.110-2_amd64.deb然後執行命令dpkg–i  libaio1_0.3.109-2ubuntu1_amd64.deb,之後在mysql目錄下啟動mysql sudo./support-files/mysql.server start。

啟動mysql後,用root使用者登陸mysql,建立一個新使用者hive並授權

mysql>grant all on hive.* [email protected]'%'  identified by 'hive';

mysql>flush privileges;

6.3安裝hive

       在官網下載hive-0.9.0-bin.tar.gz並解壓到指定路徑/usr/local/hive中,同樣的需要更改環境變數。接著需要配置檔案,複製hive-env.sh.template,修改hive-env.sh檔案新增HIVE_HOME,JAVA_HOME,HADOOP_HOME,以及檔案hive-site.xml。檔案配置完成後便可啟動hive服務了。

       為連線hive和mysql還需下載一個JDBC驅動包,這裡我們選擇了mysql-connector-java-5.1.44.tar.gz,將該檔案解壓到hive目錄下的lib中。

6.4驗證配置

       各節點都安裝完成hive及mysql,啟動hadoop服務,只需在master節點上執行啟動服務命令先執行初始化命令hadoop namenode-format ,再分別執行命令start-dfs.sh,start-mapred.sh,服務啟動成功後可以在master節點jps看到Jobtracker、Namenode、Secondarynamenode程序,在各slave節點jps看到Datanode、Tasktracker程序。

       之後執行hive,建立一個表

hive>CREATETABLE xp(idINT,name string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';

       用hive使用者登陸mysql,執行命令showtables,可以看到剛由hive建立的表xp。至此hadoop的完全分散式已經完全搭建成功,並且實現了各節點的hive、mysql功能。

相關推薦

詳細Ubuntu系統搭建Hadoop完全分散式

1.Hadoop的執行環境介紹hadoop主要有三種執行模式:單機模式、偽分佈模式、完全分佈模式。其中在單機模式下所有3個XML檔案均為空,當配置檔案為空時,Hadoop會完全執行在本地,因為不需要與其他節點互動,單機模式就不使用HDFS,也不載入任何Hadoop的守護程序。

超級無敵詳細使用ubuntu搭建hadoop完全分散式叢集

## 一、軟體準備 1. 安裝VMware 2. 下載ubuntu映象([阿里源ubuntu下載地址](http://mirrors.aliyun.com/ubuntu-releases/))選擇自己適合的版本,以下我使用的是18.04-server版就是沒有桌面的。安裝桌面版如果自己電腦配置不行的

Windows 7 64位系統搭建Hadoop分散式環境(很詳細

在開始配置前,我們先了解Hadoop的三種執行模式。 Hadoop的三種執行模式 獨立(或本地)模式:無需執行任何守護程序,所有程式都在同一個JVM上執行。在獨立模式下測試和除錯MapReduce程式很方便,因此該模式在開發階段比較適合。 **偽分散式

在 kali linux 搭建 hadoop分散式系統

記錄在 kali linux 下搭建 hadoop 偽分散式的過程: 1. 安裝和設定 JDK:     1) kali 中預設已經安裝 Java,可以使用 java -version 檢查 Java的安裝情況;發現 java 的安裝檔名可能是 openjdk      2

Hadoop】在Ubuntu系統安裝Hadoop單機/偽分布式安裝

multi .cn 編輯器 重新 偽分布式 sources edit 信息 情況 Ubuntu 14.10 前方有坑: 由於之前的分布式系統電腦帶不動,所以想換一個偽分布式試一試。用的是Virtualbox + Ubuntu 14.10 。結果遇到了 apt-get 源無

CentOS 6.5環境搭建HDFS完全分散式

準備工作        首先需要準備4臺CentOS6.5虛擬機器,並且將網路與JDK配置完全,如需配置JDK詳見上次部落格。        注意:在安裝JDK時需要先確認一下系統中是否自帶JDK,控制檯輸入java -version如果顯示了JDK版本,最好

CentOS6.5搭建hadoop完全分散式叢集

搭建完全分散式叢集-------------------------------前提條件:已經按照之前的步驟搭建完偽分散式。https://blog.csdn.net/weixin_42006411/article/details/80500217搭建hadoop偽分散式連結

centos7搭建hadoop完全分散式叢集

搭建步驟   1.安裝centos7,並進行準備工作(可以安裝一個之後然後克隆) 2.修改各個centos7的hostname和hosts 3.建立使用者和使用者組 4.配置centos7網路,是centos7系統之間以及和hosts主機之間可以通過互相ping通

ubuntu18.04 搭建hadoop完全分散式叢集(Master、slave1、slave2)共三個節點

一、硬體配置以及作業系統: 所需要的機器以及作業系統:一臺mac os筆記本、一臺window筆記本(CPU雙核四執行緒,記憶體8G),其中mac os用於遠端操作,window筆記本裝有虛擬機器,虛擬出3個ubuntu18.04系統(配置CPU1個執行緒2個,記憶體1.5G,硬碟分配每個7

VM+CentOS+hadoop2.7搭建hadoop完全分散式叢集

寫在前邊的話:       最近找了一個雲端計算開發的工作,本以為來了會直接做一些敲程式碼,處理資料的活,沒想到師父給了我一個課題“基於質量資料的大資料分析”,那麼問題來了首先要做的就是搭建這樣一個平臺,毫無疑問,底層採用hadoop叢集,在此之上,進行一些其他元件的安裝和二

CentOS6.5虛擬機器搭建Hadoop分散式環境

一、 實驗環境 作業系統:CentOS6.5 Hadoop版本:hadoop-2.7.2 JDK版本:jdk-8u73-linux-x64 二、 搭建步驟 1.安裝作業系統:使用VitualBox安裝CentOS6.5作業系統,安裝方式選擇為

[虛擬機器VM][Ubuntu12.04]搭建Hadoop完全分散式環境(一)

前言 大家都知道,Hadoop的部署方式可分為 單機模式 偽分散式 完全分散式 本篇主要講解的就是完全分散式。 搭建完全分散式的叢集環境,需要多臺的硬體裝置,作為初學者,為了搭建叢集去買多臺電腦,多少有點不現實,所以這裡我採用的是VM虛擬機器,模擬搭

ubuntu系統搭建Review Board程式碼審查環境

Software and hardware environment: ubuntu-14.04.5-desktop-amd64.iso VirtualBox-5.2.4-119785-Win.exe Installing Review

[虛擬機器VM][Ubuntu12.04]搭建Hadoop完全分散式環境(三)(終篇)

接前兩篇,這是最終篇,前面的準備工作都完成了之後,我們開始安裝和部署hadoop 安裝和配置Hadoop hadoop叢集中每臺機器的配置都基本相同,我們先配置好master,然後複製到slave1和slave2上 1、下載並解壓,並重命名目錄

史上最簡單詳細Hadoop完全分散式叢集搭建

一.安裝虛擬機器環境 Vmware12中文官方版 連結:https://pan.baidu.com/s/1IGKVfaOtcFMFXNLHUQp41w 提取碼:6rep 啟用祕鑰:MA491-6NL5Q-AZAM0-ZH0N2-AAJ5A 這個安裝就十分的簡單了,只需要不斷點選下

linux ubuntu系統基於eclipse的hadoop開發環境搭建

hadoop是基於linux作業系統的。 本文在linux ubuntu系統下,在eclipse下配置hadoop的開發環境。 這個開發環境對linux下的hadoop偽分散式配置有效,其他配置情況不明。 如果是完全分散式環境,需要重新設定core-site.xml,hdf

基於CentOS6.5系統Hadoop2.7.3完全分散式叢集搭建詳細步驟

 前言:本次搭建hadoop叢集使用虛擬機器克隆方式克隆slave節點,這樣做可以省去很多不必要的操作,來縮短我們的搭建時間。 一、所需硬體,軟體要求 使用 VMWare構建三臺虛擬機器模擬真實物理環境 作業系統:CentOS6.5 二、必備條件 hadoop搭建需

Win10平臺搭建hadoop分散式系統

1、安裝Oracle VM VirtualBox 2、在VirtualBox虛擬中新增3個虛擬主機,分別命令為Linux1,Linux2,Linux3 注:我們建的虛擬主機都是Ubuntu版本的Linux主機 3、在設定>儲存>虛擬光碟機中新增Ub

centos7搭建hadoop、hbase、hive、spark分散式系統架構

全棧工程師開發手冊 (作者:欒鵬) 在使用前建議先將當前使用者設定為root使用者。參考https://blog.csdn.net/luanpeng825485697/article/details/80278383中修改使用者許可權的第三種方法。有了

Ubuntu Hadoop 完全分散式搭建

系統:Ubuntu16.04 jdk:jdk1.8.0_101 Hadoop:hadoop2.7.3 首先需要有兩臺以上的計算機,一臺作為Master節點,其他的作為Slave節點,所有的伺服器上都需要配置好jdk的環境, 我這裡準備了兩臺伺服器作為