大數據學習之Hadoop Hadoop簡介和安裝

1. HADOOP背景介紹

1.1 什麼是HADOOP

  1. HADOOPapache旗下的一套開源軟件平臺
  2. HADOOP提供的功能:利用服務器集羣,根據用戶的自定義業務邏輯,對海量數據進行分佈式處理
  3. HADOOP的核心組件有
    1. HDFS(分佈式文件系統)
    2. YARN(運算資源調度系統)
    3. MAPREDUCE(分佈式運算編程框架)
  4. 廣義上來講,HADOOP一般是指一個更普遍的概念——HADOOP生態圈

Hadoop hive hbase flume kafka sqoop spark flink …….java

 

1.2 HADOOP產生背景

  1. HADOOP最先起源於NutchNutch的設計目標是構建一個大型的全網搜索引擎,包括網頁抓取、索引、查詢等功能,但隨着抓取網頁數量的增長,遇到了嚴重的可擴展性問題——如何解決數十億網頁的存儲和索引問題。
  2. 2003年、2004谷歌發表的兩篇論文爲該問題提供了可行的解決方案

——分佈式文件系統(GFS),可用於處理海量網頁的存儲node

——分佈式計算框架MAPREDUCE,可用於處理海量網頁的索引計算問題。python

   3.Nutch的開發人員完成了相應的開源實現HDFSMAPREDUCE,並從Nutch中剝離成爲獨立項目HADOOP,到20081月,HADOOP成爲Apache頂級項目,迎來了它的快速發展期。
算法

 

 

1.3 HADOOP在大數據、雲計算中的位置和關係

 

  1. 雲計算是分佈式計算、並行計算、網格計算、多核計算、網絡存儲、虛擬化、負載均衡等傳統計算機技術和互聯網技術融合發展的產物。藉助IaaS(基礎設施即服務)PaaS(平臺即服務)SaaS(軟件即服務)等業務模式,把強大的計算能力提供給終端用戶。

 

    2.現階段,雲計算的兩大底層支撐技術虛擬化」和「大數據技術shell

    3.而HADOOP則是雲計算的PaaS層的解決方案之一,並不等同於PaaS,更不等同於雲計算自己。數據庫

 

 

1.4 國內外HADOOP應用案例介紹

 

1HADOOP應用於數據服務基礎平臺建設apache

  

二、HADOOP用於用戶畫像編程

  

 

3HADOOP用於網站點擊流日誌數據挖掘bash

  

1.5 國內HADOOP的就業狀況分析

一、 HADOOP就業總體狀況服務器

  1. 大數據產業已歸入國家十三五規劃
  2. 各大城市都在進行智慧城市項目建設,而智慧城市的根基就是大數據綜合平臺
  3. 互聯網時代數據的種類,增加都呈現爆發式增加,各行業對數據的價值日益重視
  4. 相對於傳統JAVAEE技術領域來講,大數據領域的人才相對稀缺
  5. 隨着現代社會的發展,數據處理和數據挖掘的重要性只會增不會減,所以,大數據技術是一個尚在蓬勃發展且具備長遠前景的領域

 

 

 

二、 HADOOP就業職位要求

 

大數據是個複合專業,包括應用開發、軟件平臺、算法、數據挖掘等,所以,大數據技術領域的就業選擇是多樣的,但就HADOOP而言,一般都須要具有如下技能或知識:

 

  1. HADOOP分佈式集羣的平臺搭建
  2. HADOOP分佈式文件系統HDFS的原理理解及使用
  3. HADOOP分佈式運算框架MAPREDUCE的原理理解及編程
  4. Hive數據倉庫工具的熟練應用
  5. Flumesqoopoozie等輔助工具的熟練使用
  6. Shell/python等腳本語言的開發能力

 

 

三、 HADOOP相關職位的薪資水平

 

大數據技術或具體到HADOOP的就業需求目前主要集中在北上廣深一線城市,薪資待遇廣泛高於傳統JAVAEE開發人員

 

1.6 HADOOP生態圈以及各組成部分的簡介

各組件簡介

 

重點組件:

HDFS:分佈式文件系統

MAPREDUCE:分佈式運算程序開發框架

HIVE:基於大數據技術(文件系統+運算框架)的SQL數據倉庫工具

HBASE:基於HADOOP的分佈式海量數據庫

ZOOKEEPER:分佈式協調服務基礎組件

Mahout:基於mapreduce/spark/flink等分佈式運算框架的機器學習算法庫

Oozie:工做流調度框架

Sqoop:數據導入導出工具

Flume:日誌數據採集框架

 

 

2 分佈式系統概述

 

注:因爲大數據技術領域的各種技術框架基本上都是分佈式系統,所以,理解hadoopstormspark等技術框架,都須要具有基本的分佈式系統概念

 

 

 

2.1 分佈式軟件系統(Distributed Software Systems)

 

² 該軟件系統會劃分紅多個子系統或模塊,各自運行在不一樣的機器上,子系統或模塊之間經過網絡通訊進行協做,實現最終的總體功能

 

² 好比分佈式操做系統、分佈式程序設計語言及其編譯(解釋)系統、分佈式文件系統和分佈式數據庫系統等。

 

 

 

2.2 分佈式軟件系統舉例:solrcloud 

 

  1. 一個solrcloud集羣一般有多臺solr服務器
  2. 每個solr服務器節點負責存儲整個索引庫的若干個shard(數據分片)
  3. 每個shard又有多臺服務器存放若干個副本互爲主備用
  4. 索引的創建和查詢會在整個集羣的各個節點上併發執行
  5. solrcloud集羣做爲總體對外服務,而其內部細節可對客戶端透明

 

總結:利用多個節點共同協做完成一項或多項具體業務功能的系統就是分佈式系統。

 

 

 

2.3 分佈式應用系統模擬開發

 

需求:能夠實現由主節點將運算任務發往從節點,並將各從節點上的任務啓動;

 

程序清單:

 

AppMaster

 

AppSlave/APPSlaveThread

 

Task

 

程序運行邏輯流程:

  

 

 

 

 

3.集羣搭建

3.1 HADOOP集羣搭建

3.1.1集羣簡介

HADOOP集羣具體來講包含兩個集羣:HDFS集羣和YARN集羣,二者邏輯上分離,但物理上常在一塊兒

HDFS集羣:

負責海量數據的存儲,集羣中的角色主要有 NameNode / DataNode 

最好將SecondaryNameNode配置在另外一臺機器上  SecondaryNameNode嚴格意義上並不算是NameNode的備份 只是保存了大量的NameNode上的元數據  

YARN集羣:

負責海量數據運算時的資源調度,集羣中的角色主要有 ResourceManager /NodeManager

(mapreduce是什麼呢?它實際上是一個應用程序開發包)

 

本集羣搭建案例,以5節點爲例進行搭建,角色分配以下:

 

hdp-node-01    NameNode  SecondaryNameNode

hdp-node-02    ResourceManager

hdp-node-03 DataNode    NodeManager

hdp-node-04 DataNode    NodeManager

hdp-node-05 DataNode    NodeManager

 

 部署圖以下:

3.1.2服務器準備

本案例使用虛擬機服務器來搭建HADOOP集羣,所用軟件及版本:

一、 Vmware 14.0

二、Centos  6.7  64bit

建立虛擬機:

1.點擊文件,新建一個虛擬機

2.安裝時選則自定義,下一步,兼容性直接點下一步

3.點稍後安裝操做系統,下一步

4.客戶機操做系統選擇Linux,版本Centos 64位 ,下一步

5.修改虛擬機名稱 指定虛擬機存放位置 下一步

6.處理器數量1  核心數量2  下一步

7.設置虛擬機大小2GB  下一步

8.網絡鏈接類型選NAT 下一步

9.SCSI控制器選擇推薦的 下一步

10.虛擬磁盤類型選擇推薦的 下一步

11.建立新虛擬磁盤 下一步

12.磁盤大小20G(通常爲20G-50G) 拆分爲多個文件 下一步

13.下一步

14.完成

15.以後在VMware窗口 選擇剛剛裝好的虛擬機 點擊 cd/dvd  而後選擇 使用ISO映象文件 瀏覽選擇

16.點擊 VMware上方的 編輯 選擇虛擬網絡編輯器

17.進去後(win10須要點擊右下方的 更改設置)  選擇VMnet8(NAT模式)  設置子網IP:192.168.59.0  子網掩碼:255.255.255.0

18.啓動虛擬機 點擊skip 以後選擇下一步 而後選擇中文 下一步 選擇簡體中文 下一步

19.選擇存儲類型 Basic 下一步

20.Yes 格式化硬盤 下一步

21.設置主機名 (主機名可更改) 下一步

22.設置時間 上海 點擊上海的位置 下一步

23.設置root用戶密碼 123456 記住密碼  密碼簡單 選擇use anyway 下一步

24.磁盤劃分使用默認劃分方式 next

25.write change to disk  ,  next 等待安裝  Reboot

26.重啓以後 輸入用戶名: root  密碼 :123456

以後 在3.1.4

3.1.3網絡環境準備

1.   採用NAT方式聯網

2.         3個服務器節點IP地址:192.168.59.130、192.168.59.13一、192.168.59.132

3.   子網掩碼:255.255.255.0

3.1.4服務器系統設置

 

添加映射(添加主機名和ip地址映射  即其餘虛擬機所在位置)

 

vi /etc/hosts

 

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.59.130 hadoop
192.168.59.131 hadoop001
192.168.59.132 hadoop002

 

設置主機名

vi /etc/sysconfig/network

NETWORKING=yes
HOSTNAME=hadoop

網卡配置  

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

   

 

本機進入 C:\Windows\System32\drivers\etc 修改hosts 添加

192.168.59.130  hadoop
192.168.59.131  hadoop001
192.168.59.132  hadoop002

# ip地址               主機名

查看防火牆狀態

service iptables status

關閉防火牆

service iptables stop

 開機禁止防火牆啓動

chkconfig iptables off

安裝ssh

yum install -y openssh-clients

3.1.5 XShell

使用xshell鏈接虛擬機

主機那裏輸入192.168.59.130 或者 hadoop均可以(輸入hadoop必須把本機hosts配置好)

 

此時就能夠用xshell鏈接虛擬機

3.1.6 克隆虛擬機 

製做模板以前須要刪除/etc/udev/rules.d/70-persistent-net.rules目錄下的網卡和mac地址的映射文件,刪除以後關機

而後克隆虛擬機

 

vi /etc/udev/rules.d/70-persistent-net.rules

 

 

克隆虛擬機後

把IPADDRGA改爲對應虛擬機的ip

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

以後修改虛擬機的主機名

vi /etc/sysconfig/network

 

3.1.7 Jdk環境安裝

1.上傳jdk安裝包

 

使用rz上傳安裝包,若是顯示-bash: rz: command not found沒有rz命令,先安裝rzsz命令

 

安裝命令爲

yum install -y lrzsz

 

輸入rz後,找到安裝包位置 點擊打開

 

2.解壓安裝包

java.tar.gz是java的名字 根據本身的java名字寫上去

/是想要安裝到的路徑 本身定義

 

tar -zxvf  java.tar.gz -C /

配置環境變量 /etc/profile

vi /etc/profile

添加  JAVA_HOME 是java的安裝路徑

export JAVA_HOME=/root/app/jdk1.8.0_171/
export PATH=$PATH:$JAVA_HOME/bin

 添加後從新加載配置文件

source /etc/profile

3.1.8 HADOOP安裝部署

通常參數列表

  fs.defaultFS          HDFS的名稱空間地址

  dfs.blocksize           塊大小,默認是64M或128M,文件存儲的時候,若是大於指定塊大小,則切分,若是小於,則按照文件大小存儲,並不會佔用指定塊大小

  dfs.replication         備份數,默認爲3

  dfs.reservedsize        磁盤保留空間,默認未開啓

  dfs.namenode.edit.dir       NameNode的edit日誌存放路徑,edit日誌文件編號先後鏈接,若是中間有斷鏈,那麼說明文件缺失

  dfs.namenode.name.dir       NameNode的image文件(元數據)存放路徑

  dfs.datanode.data.dir        DataNode的數據存儲目錄,能夠選擇存儲在多個目錄下,多個目錄用逗號隔開

  dfs.namenode.rpc-address    NameNode的RPC服務端口號

  dfs.namenode.http-address   NameNode的HTTP服務端口號

  dfs.datanode.address       DataNode的RPC服務端口號,數據傳輸用

  dfs.datanode.http.address     DataNode的HTTP服務端口號

  dfs.datanode.ipc.address    DataNode的IPC端口號,與NameNode通訊

  fs.trash.interval          開啓回收站,若是經過hdfs的shell命令刪除的數據會放到回收站,回收站默認清除時間爲1小時,也能夠自定

 

  上傳HADOOP安裝包

  規劃安裝目錄  /home/hadoop/apps/hadoop-2.8.3

  解壓安裝包

  修改配置文件  $HADOOP_HOME/etc/hadoop/

  最簡化配置以下:

  在hadoop目錄/etc/hadoop下

  vi  hadoop-env.sh

  JAVA_HOME    java放在哪一個位置

# The java implementation to use.

export JAVA_HOME=/home/hadoop/apps/jdk_1.8.65

 

  vi  core-site.xml 

  fs.defaultFS   主機名:端口號

<configuration>

<property>

<name>fs.defaultFS</name>

<value>hdfs://hadoop:8000</value>

</property>

<property>

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

<value>/home/HADOOP/apps/hadoop-2.6.1/tmp</value>

</property>

</configuration>

 

  vi  hdfs-site.xml

<configuration>

<property>

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

<value>/home/hadoop/data/name</value>

</property>

<property>

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

<value>/home/hadoop/data/data</value>

</property>

 

<property>

<name>dfs.replication</name>

<value>3</value>

</property>

 

<property>

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

<value>hadoop:50090</value>

</property>

</configuration>

  vi  mapred-site.xml

<configuration>

<property>

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

<value>yarn</value>

</property>

</configuration>

vi  yarn-site.xml 

<configuration>

<property>

<name>yarn.resourcemanager.hostname</name>

<value>hadoop</value>

</property>

 

<property>

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

<value>mapreduce_shuffle</value>

</property>

</configuration>

  vi  salves 

想要哪些節點的DataNode啓動

hadoop
hadoop001
hadoop002

  

3.1.9 複製到其餘虛擬機

把第一臺安裝好的jdk和hadoop以及配置文件發送給另外兩臺

  hosts文件

  jdk安裝後的文件夾

  Hadoop安裝後的文件夾

  /etc/profile 文件

例如

scp -r /usr/local/jdk1.8.0_102 hadoop01:/usr/local/
scp -r /etc/hosts hadoop01:/etc/hosts

時間同步

ntpdata ip
date -s "時間"

最後記得設置ssh免密登陸 

ssh-keygen
ssh-copy-id -i /root/id_ras.pub host(ip)

 

3.1.9 啓動集羣

初始化HDFS

bin/hadoop  namenode  -format

啓動HDFS 

sbin/start-dfs.sh

啓動YARN

sbin/start-yarn.sh

 經過網頁查看

hadoop:50070

 

查看yarn

hadoop:8088

相關文章
相關標籤/搜索