1. 程式人生 > >Hadoop2.8.1完全分散式環境搭建

Hadoop2.8.1完全分散式環境搭建

前言

本文搭建了一個由三節點(master、slave1、slave2)構成的Hadoop完全分散式叢集(區別單節點偽分散式叢集),並通過Hadoop分散式計算的一個示例測試叢集的正確性。

本文叢集三個節點基於三臺虛擬機器進行搭建,節點安裝的作業系統為Centos7(yum源),Hadoop版本選取為2.8.0。作者也是初次搭建Hadoop叢集,其間遇到了很多問題,故希望通過該部落格讓讀者避免。

實驗過程

1、基礎叢集的搭建

目的:獲得一個可以互相通訊的三節點叢集

下載並安裝VMware WorkStation Pro(支援快照,方便對叢集進行儲存)下載地址,產品啟用序列號網上自行查詢。

下載CentOS7映象,

下載地址

使用VMware安裝master節點(稍後其他兩個節點可以通過複製master節點的虛擬機器檔案建立)。

三個節點儲存均為30G預設安裝,master節點記憶體大小為2GB,雙核,slave節點記憶體大小1GB,單核

2、叢集網路配置

目的:為了使得叢集既能互相之間進行通訊,又能夠進行外網通訊,需要為節點新增兩張網絡卡(可以在虛擬機器啟動的時候另外新增一張網絡卡,即網路介面卡,也可以在節點建立之後,在VMware設定中新增)。

兩張網絡卡上網方式均採用橋接模式,外網IP設定為自動獲取(通過此網絡卡進行外網訪問,配置應該按照你當前主機的上網方式進行合理配置,如果不與主機通訊的話可以採用NAT上網方式,這樣選取預設配置就行),內網IP設定為靜態IP。

本文中的叢集網路環境配置如下:

master內網IP:192.168.1.100

slave1內網IP:192.168.1.101

slave2內網IP:192.168.1.102

設定完後,可以通過ping進行網路測試

注意事項:通過虛擬機器檔案複製,在VMware改名快速建立slave1和slave2後,可能會產生網絡卡MAC地址重複的問題,需要在VMware網絡卡設定中重新生成MAC,在虛擬機器複製後需要更改內網網絡卡的IP。

每次虛擬機器重啟後,網絡卡可能沒有自動啟動,需要手動重新連線。

 3、叢集SSH免密登陸設定

目的:建立一個可以ssh免密登陸的叢集

3.1  建立hadoop使用者

為三個節點分別建立相同的使用者hadoop,並在以後的操作均在此使用者下操作,操作如下:

$su -

#useradd -m hadoop

#passwd hadoop

為hadoop新增sudo許可權

#visudo

在該行root ALL=(ALL) ALL下新增hadoop ALL=(ALL) ALL儲存後退出,並切換回hadoop使用者

#su hadoop

注意事項:三個節點的使用者名稱必須相同,不然以後會對後面ssh及hadoop叢集搭建產生巨大影響

3.2  hosts檔案設定

為了不直接使用IP,可以通過設定hosts檔案達到ssh  slave1這樣的的效果(三個節點設定相同)

$sudo vim /etc/hosts

在檔案尾部新增如下行,儲存後退出:

192.168.1.100  master

192.168.1.101  slave1

192.168.1.102  slave2

注意事項:不要在127.0.0.1後面新增主機名,如果加了master,會造成後面hadoop的一個很坑的問題,在slave節點應該解析出masterIP的時候解析出127.0.0.1,造成hadoop搭建完全正確,但是系統顯示可用節點一直為0。

3.3  hostname修改

centos7預設的hostname是localhost,為了方便將每個節點hostname分別修改為master、slave1、slave2(以下以master節點為例)。

$sudo hostnamectl set-hostname master

重啟terminal,然後檢視:$hostname

3.3  ssh設定

設定master節點和兩個slave節點之間的雙向ssh免密通訊,下面以master節點ssh免密登陸slave節點設定為例,進行ssh設定介紹(以下操作均在master機器上操作):

首先生成master的rsa金鑰:$ssh-keygen -t rsa 

設定全部採用預設值進行回車

將生成的rsa追加寫入授權檔案:$cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

給授權檔案許可權:$chmod 600  ~/.ssh/authorized_keys

進行本機ssh測試:$ssh maste r正常免密登陸後所有的ssh第一次都需要密碼,此後都不需要密碼

將master上的authorized_keys傳到slave1

sudo scp ~/.ssh/id_rsa.pub [email protected]:~/   

登陸到slave1操作:$ssh slave1輸入密碼登陸  

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

修改authorized_keys許可權:$chmod 600  ~/.ssh/authorized_keys

退出slave1:$exit

進行免密ssh登陸測試:$ssh slave1

4、java安裝

目的:hadoop是基於Java的,所以要安裝配置Java環境(三個節點均需要操作,以下以master節點為例)

下載並安裝:$sudo yum install java-1.8.0-openjdk  java-1.8.0-openjdk-devel

驗證是否安裝完成:$java -version

配置環境變數,修改~/.bashrc檔案,新增行: export JAVA_HOME=/usr/lib/jvm/java-1.8.0

使環境變數生效:$source ~/.bashrc

5、Hadoop安裝配置

目的:獲得正確配置的完全分散式Hadoop叢集(以下操作均在master主機下操作)

安裝前三臺節點都需要需要關閉防火牆和selinux

$sudo systemctl stop firewalld.service

$sudo systemctl disable firewalld.service

$sudo vim /usr/sbin/sestatus 

將SELinux status引數設定為關閉狀態

SELinux status:                 disabled

5.1  Hadoop安裝

 首先在master節點進行hadoop安裝配置,之後使用scp傳到slave1和slave2。

下載Hadoop二進位制原始碼至master,下載地址,並將其解壓在~/ 主目錄下

$tar -zxvf ~/hadoop-2.8.1.tar.gz -C ~/

$mv ~/hadoop-2.8.1/* ~/hadoop/

注意事項:hadoop有32位和64位之分,官網預設二進位制安裝檔案是32位的,但是本文作業系統是64位,會在後面hadoop叢集使用中產生一個warning但是不影響正常操作。

5.2  Hadoop的master節點配置

配置hadoop的配置檔案core-site.xml  hdfs-site.xml  mapred-site.xml  yarn-site.xml  slaves(都在~/hadoop/etc/hadoop資料夾下)

$cd ~/hadoop/etc/hadoop

$vim core-site.xml其他檔案相同,以下為配置檔案內容:

1.core-site.xml  

<configuration>
  <property>
    <name>fs.default.name</name>
    <value>hdfs://master:9000</value>
  </property>
  <property>
    <name>hadoop.tmp.dir</name>
    <value>file:/home/hadoop/hadoop/tmp</value>
  </property>
</configuration>

2.hdfs-site.xml 

<configuration>
  <property>
    <name>dfs.replication</name>
    <value>2</value>
  </property>
  <property>
    <name>dfs.namenode.name.dir</name>
    <value>file:/home/hadoop/hadoop/tmp/dfs/name</value>
  </property>
  <property>
    <name>dfs.datanode.data.dir</name>
    <value>file:/home/hadoop/hadoop/tmp/dfs/data</value>
  </property>
  <property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>master:9001</value>
  </property>
</configuration>

3.mapred-site.xml  

<configuration>
  <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>
</configuration>

4.yarn-site.xml

<configuration>
  <property>
    <name>yarn.resourcemanager.hostname</name>
    <value>master</value>
  </property>
  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
  </property>
  <property>
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
  </property>
  <property>
    <name>yarn.log-aggregation.retain-seconds</name>
    <value>604800</value>
  </property>
</configuration>

5.slaves

slave1
slave2

5.3  Hadoop的其他節點配置

此步驟的所有操作仍然是在master節點上操作,以master節點在slave1節點上配置為例

複製hadoop檔案至slave1:$scp -r ~/hadoop [email protected]:~/

5.4  Hadoop環境變數配置

配置環境變數,修改~/.bashrc檔案,新增行(每個節點都需要此步操作,以master節點為例):

#hadoop environment vars
export HADOOP_HOME=/home/hadoop/hadoop
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

使環境變數生效:$source ~/.bashrc

6、Hadoop啟動

格式化namenode:$hadoop namenode -format

啟動hadoop:$start-all.sh

master節點檢視啟動情況:$jps

slave1節點檢視啟動情況:$jps

 

slave2節點檢視啟動情況:$jps

Web瀏覽器輸入127.0.0.1:50070,檢視管理介面

7、Hadoop叢集測試

目的:驗證當前hadoop叢集正確安裝配置

本次測試用例為利用MapReduce實現wordcount程式

生成檔案testWordCount:$echo "My name is Xie PengCheng. This is a example program called WordCount, run by Xie PengCheng " >> testWordCount

建立hadoop資料夾wordCountInput:$hadoop fs -mkdir /wordCountInput

將檔案testWordCount上傳至wordCountInput資料夾:$hadoop fs -put testWordCount /wordCountInput

執行wordcount程式,並將結果放入wordCountOutput資料夾:$hadoop jar ~/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.1.jar wordcount /wordCountInput /wordCountOutput

注意事項:/wordCountOutput資料夾必須是沒有建立過的資料夾

檢視生成資料夾下的檔案:$hadoop fs -ls /wordCountOutput

output/part-r-00000可以看到程式執行結果:$hadoop fs -cat /wordCountOutpart-r-00000

 

嗯嗯,作者就叫謝鵬程。

相關推薦

Hadoop2.8.1完全分散式環境搭建

前言 本文搭建了一個由三節點(master、slave1、slave2)構成的Hadoop完全分散式叢集(區別單節點偽分散式叢集),並通過Hadoop分散式計算的一個示例測試叢集的正確性。 本文叢集三個節點基於三臺虛擬機器進行搭建,節點安裝的作業系統為Centos7(yum源),Hadoop版本選取為2.8

Hadoop2.7.4完全分散式環境搭建

軟體版本 虛擬機器管理軟體:VMware WorkStation Pro 12.0 作業系統:CentOS 6.7 Hadoop:Hadoop 2.7.4 JDK:jdk-8u65-linux-x64.tar.gz 一、環境準備 1、 修改各個節點主機名:vi /e

Spark之——Hadoop2.7.3+Spark2.1.0 完全分散式環境 搭建全過程

一、修改hosts檔案在主節點,就是第一臺主機的命令列下;vim /etc/hosts我的是三臺雲主機:在原檔案的基礎上加上;ip1 master worker0 namenode ip2 worker1 datanode1 ip3 worker2 datanode2其中的i

Centos7.5搭建Hadoop2.8.5完全分散式叢集

一、基礎環境設定 1. 準備4臺客戶機(VMware虛擬機器) 系統版本:Centos7.5 192.168.208.128 ——Master 192.168.208.129 ——Slaver-1 192.168.208.130 ——Slaver-2 192.168.208.130 ——Slaver-3

Hadoop從入門到精通系列之--3.完全分散式環境搭建

目錄 一 什麼是完全分散式 二 準備伺服器 三 叢集分發指令碼 3.1 scp(secure copy)安全拷貝 3.2 rsync遠端同步 3.3 叢集分發指令碼 四 叢集規劃 4.1 規劃思想 4.2 具體配置 4.3 ssh免密登陸 一 什麼

Hadoop系列之完全分散式環境搭建及測試驗證

前置條件: 已製作好CentOS 虛擬機器模板。 該模板安裝好Oracle JDK,且 JAVA_HOME 值為/usr/java/jdk1.8.0_171-amd64/jre。 準備三臺虛擬機器 搭建完全 Hadoop 分散式最少需要三臺伺服器,假設三臺伺服器

Hadoop-3.1.1完全分散式叢集搭建

一、工作準備 1.虛擬機器 安裝Vmware 安裝CentOs虛擬機器三臺 master 192.168.33.101 slave1 192.168.33.102 slave2 192.168.33.103 2.虛擬機器配置

最詳細的Hadoop+Hbase+Hive完全分散式環境搭建教程(二)

繼續上次的教程,這次安裝hbase與hive 一、hbase2.1.1安裝 在master節點: $ tar -zxvf hbase-2.1.1-bin.tar.gz -C /opt $ cd /opt/hbase-2.1.1/conf/ $ vi hbase-

大資料環境搭建之Kafka完全分散式環境搭建步驟詳解

文章目錄 環境準備 解壓安裝 配置檔案 服務啟動 1、啟動分散式叢集的zookeeper 2、啟動Kafka服務 偽分散式搭建完畢之後,只要稍作修改就

HBase HA完全分散式環境搭建

一 叢集部署架構介紹 Master節點一主一備,跟HadoopNameNode 保持一致,即HBase Master也把主從節點放在NameNode主從同一臺機器 RegionServer放在每一個對

Hadoop完全分散式環境搭建

試驗環境: 1臺NameNode伺服器,2臺DataNode伺服器 安裝步驟: ①:配置/etc/hosts檔案:實現叢集內部的DNS解析,無需查詢DNS伺服器,當訪問遠端主機時首先查詢hosts檔案是否有配置,如果配置則直接按照指定的IP直接訪問遠端主機(

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

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

hadoop學習第二天~Hadoop2.6.5完全分散式叢集搭建和測試

環境配置: 系統 centos7 節點 192.168.1.111 namenode 192.168.1.115 datanode2 192.168.1.116 datanode3 java 環境 :

Hadoop2.x.x偽分散式環境搭建、測試

0、使用host-only方式 將Windows上的虛擬網絡卡改成跟Linux上的網絡卡在同一個網段 注意:一定要將Windows上的VMnet1的IP設定和你的虛擬機器在同一網段,但是IP不能相同。 1、Linux環境配置 1.1修改主機名 vim /etc/syscon

Hadoop2.2.0偽分散式環境搭建(附:64位下編譯Hadoop-2.2.0過程)

Hadoop2.2.0偽分散式環境搭建: 寫在前面:Hadoop2.2.0預設是支援32位的OS,如果想要在64位OS下執行的話,可以通過在64位OS下面編譯Hadoop2.2.0來實現,編譯的操作步驟在最後面呈現。 1: 操作:下載軟體; 檔案:Hadoop-2.2.0.

Hadoop 2.6.4 完全分散式環境搭建

一、安裝linux 環境 OS Linux:CentOS 6.6 64bit 記憶體 1.5-2GB 硬碟 15-20GB 二、安裝JDK 及修改hostname 1、修改hostname  [[email protected] ~]# vi /etc/s

hbase完全分散式環境搭建

             HBase是一個分散式的、面向列的開源資料庫,該技術來源於Chang et al所撰寫的Google論文“Bigtable:一個結構化資料的分散式儲存系統”。就像Bigtable利用了Google檔案系統(File System)所提供的分散式資料儲

hadoop2.7.1在vmware上3臺centos7虛擬機器上的完全分散式叢集搭建

叢集架構 centos7的安裝 安裝java hadoop全分佈 ssh無密碼登入 hadoop叢集正常啟動測試 以下內容均屬個人理解,如有偏差,望大家諒解。 叢集架構 3臺虛擬機器都在同一個區域網中,網段是192.168.10.0,子網掩碼是

Hadoop2.7.2+Hbase1.2.1分散式環境搭建整理

一.準備環境 1.1. 安裝包 1)準備4臺PC 2)安裝配置Linux系統:CentOS-7.0-1406-x86_64-DVD.iso 3)安裝配置Java環境:jdk-8u91-linux-x64.gz 4)安裝配置Hadoop:hadoop-2.7.2-x64.ta

Hadoop 偽分散式環境搭建——hadoop2.8+centos7(零基礎&完整版)

引言: 環境: 一、安裝虛擬機器 在windows系統中安裝VMware14pro,直接下載安裝,無需贅述 ps:如有條件,請購買使用 二、安裝linux作業系統 CentOS 是一個基於Red Hat Linux 提供的可自由使用