1. 程式人生 > >在centos7上搭建hadoop叢集

在centos7上搭建hadoop叢集

準備工作

主機名稱 系統環境 ip地址
hadoop-master centos7 192.168.150.181
hadoop-slave1 centos7 192.168.150.182
hadoop-slave2 centos7 192.168.150.183

3.安裝3個虛擬機器並實現ssh免密碼登入
- 1.安裝虛擬機器
這裡用的linux系統是CentOS7,安裝方法請看上篇部落格(centos7 Linux環境的搭建);安裝3臺機器,機器名分別是hadoop-master、hadoop-slave1、hadoop-slaver2
1.1)機器在安裝的時候,可以建立1個hadoop使用者,之後通過hostname進行修改;
1.2)也可以使用克隆的方式複製多個獨立的虛擬機器,每個虛擬機器建立一個Hadoop使用者並加入到root組中useradd -m hadoop -G root -s /bin/bash

利用 passwd hadoop 配置密碼遇到提示說密碼簡單就再輸入一次
如圖:
- 2.配置ip和主機名

用root使用者登入hadoop-master主機上配置

vi /etc/sysconfig/network-scripts/ifcfg-ens33

這裡寫圖片描述
注意如果你是克隆的虛擬機器那麼每個虛擬機器的網絡卡UUID是一樣的,這個不行,所有要刪除這個,讓它自動在生成一個
重啟網路服務:systemctl restart network
我的實驗是把上面圖中的ip地址改為192.168.196.162 預設閘道器設定為192.168.150.2 為什麼這麼做,根據什麼要看看你的虛擬機器網路編輯器 這個在虛擬機器選單 編輯 中 我的設定如圖:
這裡寫圖片描述


如果你在上圖中設定取消了DHCP那麼你想讓你的電腦訪問虛擬機器就設定你的電腦中
這裡寫圖片描述
配置靜態IP
這裡寫圖片描述
修改主機名:vi /etc/hostname刪除原有的,修改成hadoop-master 儲存退出
- 3. 修改/etc/hosts檔案
修改hosts:vi 、etc/hosts配置如圖所示:
這裡寫圖片描述
儲存退出,重啟虛擬機器。在每個虛擬機器裡重複修改網絡卡(ifcfg-enss*),hostname,hosts 的步驟,重啟後測試互通性
要求在hadoop-master中能ping通slave1,slave2。其它任何一個虛擬機器中都能ping通另外兩個才行
這裡寫圖片描述
- 4.給hadoop-master生成祕鑰檔案並且在hadoop-master上建立authorized_keys檔案
檢查每個虛擬機器上是否安裝了ssh 和 啟動了sshd服務

rpm -qa | grep ssh

如圖所示:(出現ssh server和client證明已經安裝)
這裡寫圖片描述
如果沒有安裝請執行下面的程式碼:(遇到輸入y/N輸入y)

yum -y install openssl openssh-server openssh-clients

退出所有虛擬機器上root登陸使用者,使用hadoop使用者登入

在每個虛擬機器上執行ssh localhost測試一下,最好都做一下,非常有用,會生成 .ssh 隱藏資料夾,遇到提示輸入yes
這裡寫圖片描述

在hadoop-master虛擬機器上生成ssh金鑰

cd .ssh
ssh-keygen -t rsa #遇到提示一路回車就行
ll #會看到 id_rsa id_rsa.pub 兩檔案前為私鑰,後為公鑰
cat id_rsa.pub >> authorized_keys #把公鑰內容追加到authorized_keys檔案中
chmod 600 authorized_keys #修改檔案許可權,重要不要忽略

如圖:
這裡寫圖片描述
至此hadoop-master可以無密碼登陸自己了,測試 ssh localhost 不再提示輸入密碼,如果不能請檢查少了上面那一步

  • 5.將authorized_keys檔案複製到其他機器,實現hadoop-master無密碼登陸到所有slave上
scp authorized_keys hadoop@hadoop-slave1:~/.ssh/
scp authorized_keys hadoop@hadoop-slave2:~/.ssh/

如圖:
這裡寫圖片描述

  • 6.測試使用ssh進行無密碼登入
    這裡寫圖片描述

安裝jdk8+並搭建環境變數

使用xftp把jdk-8u121-Linux-x64.rpm傳送到每個虛擬機器上

如圖:
這裡寫圖片描述
這裡寫圖片描述

使用下面程式碼安裝

sudo yum -y install jdk-8u121-linux-x64.rpm 

如果出現這樣的錯誤 hadoop 不在 sudoers 檔案中。此事將被報告

可以使用兩種途徑解決:
1)切換到root使用者下

su
yum -y install jdk-8u121-linux-x64.rpm

2)切換到root使用者下,配置hadoop的許可權,改為root許可權

su
visudo

之後輸入:89 回車 新增hadoop ALL=(ALL) ALL 注意不是空格是製表符
這裡寫圖片描述
儲存退出,切換到hadoop使用者下,重新輸入命令:sudo yum -y install jdk-8u121-linux-x64.rpm 測試是否安裝成功,輸入如下命令

java -version

如圖表示安裝成功:
這裡寫圖片描述

搭建環境變數,我使用本地環境變數,預設安裝的jdk在/usr/Java/jdk1.8.0_121

vi .bashrc

新增

# Java Environment Variables
export JAVA_HOME=/usr/java/jdk1.8.0_121
export PATH=$PATH:$JAVA_HOME/bin

這裡寫圖片描述
退出,儲存,執行如下命令:

source .bashrc

驗證命令:echo $PATH/JAVA_HOME
這裡寫圖片描述
注意:每臺機器上都要做一遍

安裝hadoop並配置

使用xftp把hadoop-2.7.3.tar.gz傳送到每個虛擬機器上(這一步可以在傳jdk的時候一起做)

使用tar -xzvf hadoop-2.7.3.tar.gz 解壓

配置hadoop環境變數vi .bashrc 我的hadoop安裝目錄/home/hadoop/hadoop-2.7.3

新增

# Hadoop Environment Variables
export HADOOP_HOME=/home/hadoop/hadoop-2.7.3
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

這裡寫圖片描述

編輯如下5個檔案 在 /home/hadoop/hadoop-2.7.3/etc/hadoop 目錄中

1.core-site.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <!-- 指定HDFS老大(namenode)的通訊地址 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop-master:9000</value>
    </property>
    <!-- 指定hadoop執行時產生檔案的儲存路徑 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/home/hadoop/hadoop-2.7.3/tmp</value>
    </property>
</configuration>

2.hdfs-site.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
        <!-- 設定namenode的http通訊地址 -->
        <property>
                <name>dfs.namenode.secondary.http-address</name>
                <value>hadoop-master:50090</value>
        </property>
        <!-- 設定hdfs副本數量 -->
        <property>
                <name>dfs.replication</name>
                <value>2</value>
        </property>
         <!-- 設定namenode存放的路徑 -->
        <property>
                <name>dfs.namenode.name.dir</name>
                <value>file:/home/hadoop/hadoop-2.7.3/tmp/dfs/name</value>
        </property>
         <!-- 設定datanode存放的路徑 -->
        <property>
                <name>dfs.datanode.data.dir</name>
                <value>file:/home/hadoop/hadoop-2.7.3/tmp/dfs/data</value>
        </property>
</configuration>

3.mapred-site.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
        <!-- 通知框架MR使用YARN -->
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>
        <property>
                <name>mapreduce.jobhistory.address</name>
                <value>hadoop-master:10020</value>
        </property>
        <property>
                <name>mapreduce.jobhistory.webapp.address</name>
                <value>hadoop-master:19888</value>
        </property>
</configuration>

4.yarn-site.xml

<?xml version="1.0"?>
<configuration>
 <!-- 設定 resourcemanager 在哪個節點-->
<!-- Site specific YARN configuration properties -->
        <property>
                <name>yarn.resourcemanager.hostname</name>
                <value>hadoop-master</value>
        </property>
         <!-- reducer取資料的方式是mapreduce_shuffle -->
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>

</configuration>

5.slaves

hadoop-slave1
hadoop-slave2

執行hadoop叢集#

關閉防火牆和selinux

在root使用者下執行

systemctl disable firewalld   #此命令在下次重啟時生效,將永久關閉防火牆

#或用

systemctl stop firewalld    #只在本次運用時生效,下次開啟機器時需重複此操作
setenforce 0  #僅此次關閉selinux,下次開啟機器時需重複此操作

#永久關閉selinux 
vi /etc/selinux/config

這裡寫圖片描述
在每臺機子上都執行此操作

**

啟動hadoop叢集

**
在hadoop-master執行如下命令:

hdfs namenode -format #第一次啟動要執行格式化,之後啟動不用執行這個
start-dfs.sh
start-yarn.sh
mr-jobhistory-daemon.sh start historyserver

之後在hadoop-master 執行jps

看到如下算成功:

[hadoop@hadoop-master ~]$ jps
3345 NameNode
3529 SecondaryNameNode
3962 JobHistoryServer
3678 ResourceManager
3998 Jps
[hadoop@hadoop-master ~]$ 

在hadoop-slave1 和 hadoop-slave2上 執行jps

在hadoop-slave1上

[hadoop@hadoop-slave1 ~]$ jps
3142 DataNode
3357 Jps
3246 NodeManager
[hadoop@hadoop-slave1 ~]$ 

在hadoop-slave2上

[hadoop@hadoop-slave2 ~]$ jps
3092 DataNode
3306 Jps
3196 NodeManager
[hadoop@hadoop-slave2 ~]$ 

上面的資訊中數字表示程序ID,後面的字元表示程序名字
缺少任何一個程序表示叢集啟動失敗
失敗可以通過檢視日誌查詢原因

如果通過真機win訪問hadoop web管理介面需要先配置真機的hosts檔案它存在於C:\Windows\System32\drivers\etc
目錄中 在hosts檔案中新增

192.168.150.181 hadoop-master
192.168.150.182 hadoop-slave1
192.168.150.183 hadoop-slave2

這裡寫圖片描述

這裡寫圖片描述

相關推薦

centos7搭建hadoop叢集

準備工作 主機名稱 系統環境 ip地址 hadoop-master centos7 192.168.150.181 hadoop-slave1 centos7 192.168.150.182 hado

基於Centos7+Docker 搭建hadoop叢集

總體流程: 獲取centos7映象 為centos7映象安裝ssh 使用pipework為容器配置IP 為centos7映象配置java、hadoop 配置hadoop 1.獲取centos7映象 $ docker pull centos:7 //檢視當前已下載docke

AWS搭建Hadoop叢集(一)——單機安裝Hadoop

課堂專案中實現了在AWS上搭建Hadoop叢集進行資料分析,過程中間不免遇到眾多問題,在此總結以供各位參考。 建立EC2例項 亞馬遜AWS服務想必大家都有所瞭解,這裡略過註冊過程(為了拿student credit還是花了一番功夫)。在EC2的介面上,

阿里雲ECS搭建Hadoop叢集環境——使用兩臺ECS伺服器搭建“Cluster mode”的Hadoop叢集環境

Ingredient: 之前在: 這4篇文章裡講述了搭建Hadoop環境時在本地“/etc/hosts”裡面的ip域名配置上應該注意的事情,以及如何配置伺服器之間的ssh免密碼登入,啟動Hadoop遇到的一些問題的解決等等,這些都是使用ECS伺服器搭

centos7搭建hadoop(基礎篇)

主要步驟如下: 1.      修改ip(因為動態ip很麻煩) 2.      關閉防火牆(因為hadoop叢集通常是公司內部使用,埠加入列表就不攔截了) 3.      修改hostname 4. 

centos7搭建redis叢集步驟

前言:本次是模擬在多臺伺服器上搭建redis叢集,在一臺centos上佈置6個redis節點一 環境準備(以下安裝均是在根目錄下安裝)1 安裝gcc,g++yum install gcc g++ 2 安裝ruby指令碼執行環境yum install ruby3 安裝wget命

大資料之(1)Centos7搭建全分散式Hadoop叢集

本文介紹搭建一個Namenode兩個DataNode的Hadoop全分散式叢集的全部步驟及方法。具體環境如下: 一、環境準備 3個Centos7虛擬機器或者3個在一個區域網內的實際Centos7機器,機器上已安裝JDK1.8,至於不會安裝Centos7或者JDK1.8的同

入門學習Hadoop1:VMware搭建hadoop伺服器Centos7叢集,並設定SSH免密登入。

修改主機名:hostnamectl set-hostname master 檢視自己虛擬機器閘道器IP為多少 修改ip:vim /etc/sysconfig/network-scripts/ifcfg-ens32 master:192.168.187.100

CentOS7 搭建多節點 Elasticsearch叢集

本文內容腦圖如下: 文章共 747字,閱讀大約需要 2分鐘 ! 概 述 最近學 Elasticsearch,既然學之,怎麼能沒有實際的叢集來把玩呢,因此自己必須動手搭一個! 注: 本文首發於 My Personal Blog:CodeSheep·程式羊,歡迎光臨 小站

centos7克隆及網路和主機名配置(VMware15搭建Hadoop叢集

1、克隆 選中右鍵,選擇紅色方框(虛擬機器必須關閉狀態) 2、選中現有快照,但如果沒有拍攝快照則無法選中(如果能選中,則可以忽略此步驟) 解決辦法: 一.選中需要克隆的虛擬機器右鍵點選 二.更改名稱,點選拍攝快照 三。如果不需要已經有了的快照,可以刪除了重新拍攝

centos7搭建hadoop叢集之xcall指令碼

在一些特定場景下,需要所有節點同時執行相同的命令,比如主機hadoop1執行ls命令,其他節點主機也同時執行ls命令,實現這種效果快捷方式一般有兩種: 1.使用工具,同一傳送執行命令,如SecureCRT,同時連線所有節點,在視窗下面可以直接輸入需要同時執行的命令。 優

centos7搭建hadoop叢集之rsync和xsync

文章記錄於各個伺服器(或者虛擬機器等)已經配置了ssh免密登入,可執行下面操作,未配置ssh免密登入,可參考:https://blog.csdn.net/yhblog/article/details/84029535 此文章是基於centos7minimal版本的,純淨系統,所以還

本地搭建hadoop叢集--hadoop2.7.6-src在linux編譯解決downloading過慢教程

第一步:工具的準備 apache-ant-1.9.9-bin.tar.gz apache-maven-3.0.5-bin.tar.gz hadoop-2.7.6-src.tar.gz jdk1.7 就好別用1.8 據說 用1.8 maven 編譯 會報各種錯。 protobuf-2

Linux安裝Hadoop叢集(CentOS7+hadoop-2.8.0)

 關鍵字:Linux  CentOS  Hadoop  Java  版本:  CentOS7  Hadoop2.8.0  JDK1.8  說明:Hadoop從版本2開始加入了Yarn這個資源管理器,Yarn並不需要單獨安裝。只要在機器上安裝了

CentOS7.4搭建rocketMQ叢集

一、rocketMQ叢集部署方案優缺點對比: 多Master模式(2m-noslave) : 一個叢集無Slave,全是Master,例如2個Master或者3個Master 優點:配置簡單,單個Master宕機或重啟維護對應用

CDH搭建Hadoop叢集(Centos7)

一、說明  節點(CentOS7.5) Server  || Agent CPU node11 Server  || Agent 4G node12 Agent

用Docker在一臺膝型電腦搭建一個具有10個節點7種角色的Hadoop叢集(下)-搭建Hadoop叢集

上篇介紹了快速上手Docker部分,下面接著介紹搭建Hadoop叢集部分。 六、搭建Hadoop偽分佈模式 我們先用前面建立的這個容器來搭建Hadoop偽分佈模式做測試,測試成功後再搭建完全分散式叢集。1.SSH這個centos容器可以看做是一個非常精簡的系統,很多功能沒有,需要自己安裝。Hado

初試 Centos7 Ceph 儲存叢集搭建

目錄 Ceph 介紹 環境、軟體準備 Ceph 預檢 Ceph 儲存叢集搭建 1、Ceph 介紹 Ceph 是一個開源的分散式儲存系統,包括物件儲存、塊裝置、檔案系統。它具有高可靠性、安裝方便、管理簡便、能夠輕鬆管理海量資料。Ceph 儲存叢

在ubuntu搭建hadoop服務 (叢集模式)

環境:ubuntu 16.04hadoop-3.0.3參考:http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/ClusterSetup.html1.參考上一篇“在Ubuntu上搭建H

在ubuntu14.04使用ambari搭建hadoop叢集

一、環境準備 在使用ambari搭建hadoop叢集之前需要準備一些環境。本文使用三臺機器搭建hadoop叢集。IP分別為: ubuntu 的 IP :192.168.127.138 hadoop1 的 IP: 192.168.127.1