大數據(三) --HDFS搭建的三種模式

搭建前說明


     在集羣中, 一臺服務器在集羣中扮演的角色, 由該服務器上啓動的進程決定. 即角色 = 進程.java


    Hadoop軟件庫是一個開源框架, 可以使用編程模式跨計算機集羣分佈式的存儲和處理大型數據集. 它從單個服務器擴展到數千臺服務器, 每一臺都提供本地計算和存儲. 庫自己不依靠硬件來提供高可用服務, 而是經過架構設計來檢測和處理程序的故障, 從而在集羣上提供高可用服務.
    Hadoop生態圈包含的模塊:
  • HDFS:分佈式文件系統,提供高可靠、高可用、可擴展以及對應用程序數據的高吞吐量訪問。
  • Zookeeper:用於分佈式應用程序的高性能協調服務。
  • Yarn:做業調度和資源管理的框架。
  • MapReduce:用於並行計算處理大型數據集,是一種計算框架。
  • Ambari:用於配置,管理和監控Hadoop集羣。提供用於查看羣集運行情況的儀表板,可視化查看MapReduce,Pig和Hive應用程序,以及以用戶友好的方式診斷其性能特徵的功能。
  • Avro:數據序列化系統。
  • Cassandra:可擴展的多主數據庫,沒有單點故障。
  • HBase:可擴展的分佈式數據庫,支持大型表的結構化數據存儲。
  • Hive:數據倉庫基礎架構,提供數據彙總和查詢。
  • Pig:用於並行計算的高級數據流語言和執行框架。
  • Spark:用於數據的快速通用計算引擎。Spark提供一種簡單而富有表現力的編程模型,支持普遍的應用程序,包括ETL,機器學習,流處理和圖形計算。

僞分佈式模型

說明

     單臺服務器上運行多個進程(角色). 通常學習Hadoop時經常使用這種模式.node

  • 角色
    • NameNode – 掌控全局
    • SecondaryNameNode – 持久化
    • DataNode – 存儲數據

集羣規劃

在這裏插入圖片描述

搭建步驟

  1. 完成下文中提到的準備環境, 只需一臺虛擬機;
  2. 具體搭建流程, 點擊查看

徹底分佈式模式

說明

     工做中應該使用的模式, 不一樣角色運行在不一樣的服務器上.linux

  • 角色
    • NameNode
    • SecondaryNameNode
    • DataNode * 3 (兩個副本)

集羣規劃

在這裏插入圖片描述

搭建步驟

  1. 完成下文中提到的準備環境, 需四臺虛擬機;
  2. 具體搭建流程, 點擊查看

高可用(HighAvailable)模式

說明

     雖然徹底分佈式是在實際工做中使用的模式, 但它並非可靠的. 緣由很簡單, 就是集羣會發生單點故障, 若是namenode節點故障, 掛掉後, 那麼這麼集羣就不可用, 不能被外部訪問. 所以, 通常都會對集羣作HA.web

  • 角色
    • NameNode(active)
    • NameNode(standby)
    • DataNode
    • Zookeeper(ZK)
    • JournalNode(JNN)
    • ZookeeperFailoverController(ZKFC)

集羣規劃

在這裏插入圖片描述

搭建步驟

  1. 完成下文中提到的準備環境, 需四臺虛擬機;
  2. 具體搭建流程, 點擊查看

搭建前準備的環境

本地機環境

準備安裝包

  • JDK-1.8
  • hadoop-2.6.5
  • zookeeper-3.4.10
  • 版本可不一樣, 網上找就能夠了, 都是開源的.

虛擬機工具

  • VMware – 用於在本地機上安裝虛擬機.
  • 虛擬機使用centos6.5的鏡像.

鏈接工具

鏈接工具備不少, 推薦使用XShell, 也可以使用其餘的, 因人而異.數據庫

上傳工具

上傳工具也有不少, 推薦Xftp和fileZilla.

編程

CentOS虛擬機環境

    除僞分佈式用到一個節點外, 其他兩種模式咱們都是使用的四節點, 給它們命名爲node01, node02, node03, node04.(命名可任意)vim

    首先, 須要先建立node01節點, 建立過程即在虛擬機中安裝CentOS, 不會的可自行必應. 其他三個節點等咱們配好一些通用配置後, 用VMware自帶的克隆功能來生成便可.centos

靜態IP配置

cd /etc/sysconfig/network-scripts/	進入該目錄, 找到ifcfg-eth0的文件,用vim打開修改
將ONBOOT=no 改成yes			設置其跟隨開機自啓動
將BOOTPROTP=dhcp改成static		設置ip的獲取由隨機改成固定
再在以後加上一下內容
IPADDR=192.168.75.133		手動設置的固定ip
PREFIX=24
GATEWAY=192.168.75.2		網關ip. 打開VMware的虛擬網絡編輯器, 選中nat模式查看nat設置中會有
DNS1=8.8.8.8			設置dns

service network restart		保存退出後, 重啓網絡服務

注意 : 添加修改時, 不要加上說明用的中文服務器

網絡設置好以後, 就能夠在本地機中用XShell遠程鏈接虛擬機了. 怎麼鏈接自行bing, 咱們對虛擬機的操做一般是在鏈接工具上操做.網絡

時間同步配置

節點安裝ntp命令 yum install ntp -y
上網查找最新的時間服務器ntp1.aliyun.com, 可選擇其餘家的
同步時間 ntpdate ntp1.aliyun.com

JDK環境配置

    使用上傳工具將jdk和hadoop的包傳到虛擬機中, 這裏筆者將jdk傳到/usr/local目錄中, 將hadoop傳到/opt/software/hadoop目錄中, 路徑因我的配置而異, 要記得本身存放的位置, 後文會對這些路徑進行配置, 到時需修改成與我的配置相關的路徑, 後續內容再也不重複此點.

進入jdk存放的位置	cd /usr/local
解壓安裝包	tar -zxf jdk-8u181-linux-x64.tar.gz
給解壓出來的文件設置權限	chmod -R 777 jdk1.8.0_181
配置java環境變量	vim /etc/profile
在文件最後插入	
export JAVA_HOME=/usr/local/jdk1.8.0_181
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin
讓修改的文件生效	source /etc/profile

控制檯輸入java -version 來查看jdk是否生效.若是提示java版本則代表成功

虛擬機clone && 主機名配置

vmware中克隆節點
在這裏插入圖片描述

克隆三個節點完成之後, 此時克隆的三個節點的主機名, 靜態ip地址, 網卡物理地址與第一個一致, 先修改一下它們:

先設置節點網卡
vim /etc/udev/rules.d/70-persistent-net.rules

打開以後, 會有兩個網卡的信息
在這裏插入圖片描述
其中, eth0 是克隆的node01節點的信息, 因此這裏咱們要刪除這一行, 而後把eth1改成eth0, 同時複製ATTR(address)中的內容, 即克隆出來的虛擬機網卡的物理地址.

而後配置ip, 分別在每個節點上執行

vim /etc/sysconfig/network-script/ifcfg-eth0

將HWADDR修改成剛纔複製的內容
再修改IPADDR的Ip地址, 只需該最後三位便可, 保證每一個節點的Ip不一樣
在修改主機名
vim /etc/sysconfig/network
將NETWORKING設置爲yes	打開網絡
將HOSTNAME分別設爲node02, node03, node04
重啓後生效

節點位置配置

爲了讓節點之間可以互相訪問到, 須要對每一個節點的位置進行配置

vim /etc/hosts	打開hosts文件
在四個節點中同時加入下列內容
192.168.75.133 	node01
192.168.75.134  node02
192.168.75.135  node03
192.168.75.136  node04
其中ip 爲各位本身配置的ip

免密登陸配置

全部節點執行  ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa	生成公鑰和私鑰

根據模式的不一樣, 將公鑰加入節點的方式不一樣:

  • 僞分佈式: node01節點要訪問它本身, 所以要在node01節點本身的白名單里加入它本身.
ssh-copy-id -i ~/.ssh/id_rsa.pub root@node01
  • 徹底分佈式: node01節點須要執行包括本身的四個節點的進程, 所以須要在每一個節點的白名單中都加入node01.
ssh-copy-id -i ~/.ssh/id_rsa.pub root@node01
ssh-copy-id -i ~/.ssh/id_rsa.pub root@node02
ssh-copy-id -i ~/.ssh/id_rsa.pub root@node03
ssh-copy-id -i ~/.ssh/id_rsa.pub root@node04
  • 高可用: 除了node01執行四個節點的進程之外, node02會執行node01的進程, 所以還須要在node01節點上再加入node02.
node01 節點上執行
ssh-copy-id -i ~/.ssh/id_rsa.pub root@node01
ssh-copy-id -i ~/.ssh/id_rsa.pub root@node02
ssh-copy-id -i ~/.ssh/id_rsa.pub root@node03
ssh-copy-id -i ~/.ssh/id_rsa.pub root@node04

node02節點上執行
ssh-copy-id -i ~/.ssh/id_rsa.pub root@node01

注:全部存儲的公鑰信息都可在 ~/.ssh/authorized_keys文件中查看

防火牆配置

關閉全部節點的防火牆
service iptables stop
永久關閉
chkconfig iptables off

  這麼配下來, 大部分配置文件須要source命令使其生效, 建議重啓虛擬機.

相關文章
相關標籤/搜索