溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

hadoop單機(jī)及偽分布式

發(fā)布時(shí)間:2020-05-08 07:38:34 來(lái)源:網(wǎng)絡(luò) 閱讀:2002 作者:何去何從_ie 欄目:云計(jì)算
hadoop的基本概念
偽分布式hadoop集群安裝
hdfs、MapReduce演示

互聯(lián)網(wǎng)正在從IT走向DT時(shí)代。

大數(shù)據(jù)應(yīng)用分析
1、統(tǒng)計(jì)類(lèi)的分析
2、推薦類(lèi)的分析    
3、機(jī)器學(xué)習(xí)(分類(lèi),聚類(lèi))
4、人工智能、預(yù)測(cè)(算法)

一、什么是hadoop


官網(wǎng):http://hadoop.apache.org

hadoop是apache旗下的一套開(kāi)源軟件平臺(tái)。
是一個(gè)可靠的、可擴(kuò)展的、可分布式計(jì)算的開(kāi)源軟件。

apache hadoop平臺(tái)是一個(gè)框架,允許使用簡(jiǎn)單的編程模型。
該平臺(tái)被設(shè)計(jì)成可以從單個(gè)服務(wù)器擴(kuò)展到數(shù)千臺(tái)服務(wù)器,每個(gè)服務(wù)器都提供本地計(jì)算和存儲(chǔ)。
也被設(shè)計(jì)成可檢測(cè)和處理應(yīng)用層的故障(即高可靠、高容錯(cuò)),高可用服務(wù)是基于計(jì)算機(jī)集群的,并且其中每一臺(tái)計(jì)算機(jī)都有可能失效。

hadoop提供的功能:利用服務(wù)器集群,根據(jù)用戶(hù)的自定義業(yè)務(wù)邏輯,對(duì)海量數(shù)據(jù)進(jìn)行分布式處理

作者:doug  cutting

hadoop的核心組件:
    hadoop common:hadoop工具
    hadoop  distributed file system(HDFS):分布式文件系統(tǒng),解決海量數(shù)據(jù)的存儲(chǔ)
    hadoop  YARN:運(yùn)算資源調(diào)度系統(tǒng),解決資源管理調(diào)度
    hadoop MapReduce:分布式運(yùn)算編程框架,解決海量數(shù)據(jù)的分析模型

Hadoop在2.0將資源管理從MapReduce中獨(dú)立出來(lái)變成通用框架后,就從1.0的三層結(jié)構(gòu)演變?yōu)榱爽F(xiàn)在的四層架構(gòu):
        1. 底層——存儲(chǔ)層,文件系統(tǒng)HDFS
        2. 中間層——資源及數(shù)據(jù)管理層,YARN以及Sentry等
        3. 上層——MapReduce、Impala、Spark等計(jì)算引擎
        4. 頂層——基于MapReduce、Spark等計(jì)算引擎的高級(jí)封裝及工具,如Hive、Pig、Mahout等等

廣義上來(lái)說(shuō),hadoop通常是指一個(gè)更廣泛的概念——Hadoop生態(tài)圈

二、hadoop產(chǎn)生背景

1、hadoop最早起源于Nutch。
Nutch的設(shè)計(jì)目標(biāo)是構(gòu)建一個(gè)大型的全網(wǎng)搜索引擎,包括網(wǎng)頁(yè)抓取、索引、查詢(xún)等功能,但隨著抓取網(wǎng)頁(yè)數(shù)量的增加,遇到了嚴(yán)重的可擴(kuò)展性問(wèn)題——如何解決數(shù)十億網(wǎng)頁(yè)的存儲(chǔ)和索引問(wèn)題。

2、2003年、2004年谷歌發(fā)表的兩篇論文為該問(wèn)題提供了可行的解決方案。
分布式文件系統(tǒng)(GFS),可用于處理海量網(wǎng)頁(yè)的存儲(chǔ);
分布式計(jì)算框架MapReduce,可用于處理海量網(wǎng)頁(yè)的索引計(jì)算問(wèn)題。

3、Nutch的開(kāi)發(fā)人員完成了相應(yīng)的開(kāi)源實(shí)現(xiàn)HDFS和MapReduce,并從Nutch中剝離成為獨(dú)立項(xiàng)目hadoop,到2008年1月,hadoop成為apache頂級(jí)項(xiàng)目,迎來(lái)了快速發(fā)展期。

三、hadoop在大數(shù)據(jù)、云計(jì)算中的位置和關(guān)系

1、云計(jì)算是分布式計(jì)算、并行計(jì)算、網(wǎng)格計(jì)算、多核計(jì)算、網(wǎng)絡(luò)存儲(chǔ)、虛擬化、負(fù)載均衡等傳統(tǒng)計(jì)算機(jī)技術(shù)和互聯(lián)網(wǎng)技術(shù)融合發(fā)展的產(chǎn)物。借助Iaas(基礎(chǔ)設(shè)施即服務(wù))、Paas(平臺(tái)即服務(wù))、Saas(軟件即服務(wù))等業(yè)務(wù)模式,把強(qiáng)大的計(jì)算能力提供給終端用戶(hù)

2、現(xiàn)階段,云計(jì)算的底層支撐技術(shù)為“虛擬化”和“大數(shù)據(jù)技術(shù)”

3、而hadoop則是云計(jì)算的Paas層的解決方案之一,并不等同于Paas,更不等同于云計(jì)算本身。

四、大數(shù)據(jù)處理業(yè)務(wù)應(yīng)用
1、大型網(wǎng)站web服務(wù)器的日志分析:一個(gè)大型網(wǎng)站的web服務(wù)器集群 ,每5分鐘收錄的點(diǎn)擊日志高達(dá)800GB左右,峰值點(diǎn)擊每秒達(dá)到900萬(wàn)次,每個(gè)5分鐘將數(shù)據(jù)裝載到內(nèi)存中,高速計(jì)算網(wǎng)站的熱點(diǎn)URL,并將這些信息反饋給前端緩存服務(wù)器,以提高緩存命中率。

2、運(yùn)營(yíng)商流量分析:每天的流量數(shù)據(jù)在2TB~5TB左右,拷貝到HDFS上,通過(guò)交互式分析引擎框架,能運(yùn)行幾百個(gè)復(fù)雜的數(shù)據(jù)清洗和報(bào)表業(yè)務(wù),總時(shí)間比類(lèi)似硬件配置的小型機(jī)集群和DB2快2~3倍。

3、IPTV收視統(tǒng)計(jì)與點(diǎn)播推薦:一個(gè)實(shí)時(shí)收視率統(tǒng)計(jì)和點(diǎn)播推薦系統(tǒng),可以實(shí)時(shí)收集用戶(hù)的遙控器操作,提供實(shí)時(shí)的收視率榜單;并且根據(jù)內(nèi)容推薦和協(xié)同過(guò)濾算法,實(shí)現(xiàn)了點(diǎn)播推薦服務(wù)。

4、城市交通卡口視頻監(jiān)控信息的實(shí)時(shí)分析:采用基于流式stream進(jìn)行全省范圍的交通卡口通過(guò)視頻監(jiān)控收錄的信息進(jìn)行實(shí)時(shí)分析、告警和統(tǒng)計(jì)(計(jì)算實(shí)時(shí)路況),對(duì)全省范圍內(nèi)未年檢車(chē)輛或×××的分析延時(shí)在300毫秒左右,可以做出實(shí)時(shí)告警。

大數(shù)據(jù)是個(gè)復(fù)合專(zhuān)業(yè),包括應(yīng)用開(kāi)發(fā)、軟件平臺(tái)、算法、數(shù)據(jù)挖掘等,因此,大數(shù)據(jù)技術(shù)領(lǐng)域的就業(yè)選擇是多樣的,但就hadoop而言,通常都需要具備以下技能或知識(shí):
1、hadoop分布式集群的平臺(tái)搭建
2、hadoop分布式文件系統(tǒng)HDFS的原理理解及使用
3、hadoop分布式運(yùn)算框架MapReduce的原理理解及編程
4、hive數(shù)據(jù)倉(cāng)庫(kù)工具的熟練應(yīng)用
5、flume、sqoop、oozie等輔助工具的熟練使用
6、shell、python等腳本語(yǔ)言的開(kāi)發(fā)能力

hadoop對(duì)海量數(shù)據(jù)處理的解決思路:


HDFS的架構(gòu):
主從結(jié)構(gòu):
主節(jié)點(diǎn):namenode
從節(jié)點(diǎn):有很多個(gè)datanode

namenode負(fù)責(zé):
接受用戶(hù)操作請(qǐng)求
存儲(chǔ)文件的元數(shù)據(jù)以及每個(gè)文件的塊列表和塊所在的datanode等
維護(hù)文件系統(tǒng)的目錄結(jié)構(gòu)
管理文件與block之間的關(guān)系,block與datanode之間關(guān)系

datanode負(fù)責(zé):
存儲(chǔ)文件
在本地文件系統(tǒng)存儲(chǔ)文件塊數(shù)據(jù),以及塊數(shù)據(jù)的校驗(yàn)和
文件被分成block存儲(chǔ)在磁盤(pán)上
為保證數(shù)據(jù)安全,文件會(huì)有多個(gè)副本

secondary  namenode(2nn):用于監(jiān)控HDFS狀態(tài)的輔助后臺(tái)程序,每隔一段時(shí)間獲取和hdfs元數(shù)據(jù)的快照。

YARN架構(gòu):
1)ResourceManager(RM)主要作用如下:
(1)處理客戶(hù)端請(qǐng)求
(2)監(jiān)控NodeManager
(3)啟動(dòng)或監(jiān)控ApplicationMaster

2)NodeManager(nm)主要作用如下:
(1)管理單個(gè)節(jié)點(diǎn)上的資源
(2)處理來(lái)自ResourceManager的命令
(3)處理來(lái)自ApplicationMaster的命令

3)ApplicationMaster(AM)作用:
(1)輔助數(shù)據(jù)的切分
(2)為應(yīng)用程序申請(qǐng)資源并分配給內(nèi)部的任務(wù)
(3)任務(wù)的監(jiān)控與容錯(cuò)

4)Container
Container是YARN中的資源抽象,它封裝了某個(gè)節(jié)點(diǎn)上的多維度資源,如內(nèi)存、CPU、磁盤(pán)、網(wǎng)絡(luò)等。

問(wèn)題:怎么解決海量數(shù)據(jù)的計(jì)算

Mapreduce架構(gòu):
兩個(gè)程序:
Map:局部并行處理輸入數(shù)據(jù)
reduce:匯總局部處理的結(jié)果,再統(tǒng)計(jì)全局

hadoop1.x和hadoop2.x版本的區(qū)別:

安裝部署,運(yùn)維、開(kāi)發(fā)、測(cè)試

HDFS三大核心:HDFS、MapReduce、YARN
四個(gè)模塊:
hadoop  common:為其他hadoop模塊提供基礎(chǔ)設(shè)施
hadoop  dfs:一個(gè)高可靠、高吞吐量的分布式文件系統(tǒng)
hadoop mapreduce:一個(gè)分布式的離線(xiàn)并行計(jì)算框架
hadoop yarn:一個(gè)新的mapreduce框架,任務(wù)調(diào)度和資源管理

hadoop安裝:

Hadoop三種安裝模式


1.Hadoop單機(jī)模式
單機(jī)模式是Hadoop默認(rèn)的安裝模式,這種安裝模式主要就是并不配置更多的配置文件,只是保守的去設(shè)置默認(rèn)的幾個(gè)配置文件中的初始化參數(shù),它并不與其他節(jié)點(diǎn)進(jìn)行交互,并且也不使用HDFS文件系統(tǒng),它主要就是為了調(diào)試MapReduce程序而生。

2.Hadoop偽分布式安裝模式
Hadoop偽分布式安裝,需要配置5個(gè)常規(guī)的配置文件(XML),并且這里涉及到了NameNode和DataNode節(jié)點(diǎn)交互問(wèn)題,而且NameNode和DataNode在同一個(gè)節(jié)點(diǎn)上,還需要配置互信。其實(shí)從嚴(yán)格意義上來(lái)講,偽分布式集群,就已經(jīng)可以稱(chēng)之為真正意義上的集群了,而且這里也包含了hdfs和MapReduce所有組件,只不過(guò)就是所有組件在同一個(gè)節(jié)點(diǎn)上而已。

3.Hadoop完全分布式安裝模式
Hadoop完全分布式集群主要分為:常規(guī)Hadoop完全分布式集群和Hadoop HA集群(這里主要針對(duì)的是NameNode個(gè)數(shù)和NameNode的高可用保障機(jī)制而言)。由此可知較偽分布式集群而言,完全分布式集群,所有處理節(jié)點(diǎn)并不在同一個(gè)節(jié)點(diǎn)上,而是在多個(gè)節(jié)點(diǎn)上。

搭建一個(gè)偽分布式集群

一、環(huán)境搭建

1、系統(tǒng)環(huán)境
平臺(tái):VMware Workstation 14
系統(tǒng):centos  7.4

2、修改主機(jī)名:
hostnamectl  set-hostname  hadoop

useradd   hadoop
passwd hadoop

visodu
hadoop    ALL=(ALL)   ALL

注:改完主機(jī)名后,需要exit退出,重新啟動(dòng)。

3、修改/etc/hosts域名解析配置文件
vi   /etc/hosts

192.168.80.100   hadoop

4、關(guān)閉防火墻和selinux
systemctl disable  firewalld
systemctl  stop firewalld
setenforce  0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config  

5、安裝時(shí)間同步
yum -y install ntpdate 

ntpdate time1.aliyun.com

6、安裝Java環(huán)境
1)解壓Java壓縮包
tar -xf jdk-8u11-linux-x64.tar.gz  -C /opt
cp -rf jdk1.8.0_11/   /usr/local/java

2)配置Java環(huán)境變量
vi /etc/profile
末尾新增:
export JAVA_HOME=/usr/local/java
export JRE_HOME=/usr/local/java/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin

3)生效環(huán)境變量
source  /etc/profile

4)驗(yàn)證
java  -version

出現(xiàn)以下提示,代表java環(huán)境部署成功:
java version "1.8.0_11"
Java(TM) SE Runtime Environment (build 1.8.0_11-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.11-b03, mixed mode)

二、hadoop正式部署安裝
官方文檔:http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html#Standalone_Operation

下載地址:http://archive.apache.org/dist/hadoop/core/hadoop-3.1.0/hadoop-3.1.0.tar.gz

1、解壓hadoop軟件包
tar xf hadoop-3.1.0.tar.gz  

2、重命名
mv hadoop-3.1.0/ /home/hadoop/hadoop

3、配置環(huán)境變量
vi  /etc/profile
export HADOOP_HOME=/home/hadoop/hadoop
export LD_LIBRARY_PATH=$HADOOP_HOME/lib/native
export HADOOP_COMMON_LIB_NATIVE_DIR=/home/hadoop/hadoop/lib/native
export HADOOP_OPTS="-Djava.library.path=/home/hadoop/hadoop/lib"
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

#hadoop-3.1.0必須添加如下5個(gè)變量否則啟動(dòng)報(bào)錯(cuò),hadoop-2.x貌似不需要
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root

hadoop單機(jī)及偽分布式

4、生效環(huán)境變量
source /etc/profile

5、測(cè)試是否配置成功
hadoop version

出現(xiàn)以下信息,代表配置成功:
Hadoop 3.1.0
Source code repository https://github.com/apache/hadoop -r 16b70619a24cdcf5d3b0fcf4b58ca77238ccbe6d
Compiled by centos on 2018-03-30T00:00Z
Compiled with protoc 2.5.0
From source with checksum 14182d20c972b3e2105580a1ad6990
This command was run using /usr/local/hadoop/share/hadoop/common/hadoop-common-3.1.0.jar

hadoop單機(jī)及偽分布式


7、hadoop目錄認(rèn)識(shí)
修改配置文件之前,先看一下hadoop下的目錄:
bin:hadoop最基本的管理腳本和使用腳本所在目錄,這些腳本是sbin目錄下管理腳本的基礎(chǔ)實(shí)現(xiàn),用戶(hù)可以直接使用這些腳本管理和使用hadoop
etc:配置文件存放的目錄,包括core-site.xml,hdfs-site.xml,mapred-site.xml等從hadoop1.x繼承而來(lái)的配置文件和yarn-site.xml等hadoop2.x新增的配置文件
include:對(duì)外提供的編程庫(kù)頭文件(具體動(dòng)態(tài)庫(kù)和靜態(tài)庫(kù)在lib目錄中,這些頭文件軍事用c++定義的,通常用于c++程序訪(fǎng)問(wèn)hdfs或者編寫(xiě)mapreduce程序)
Lib:該目錄包含了hadoop對(duì)外提供的才變成動(dòng)態(tài)庫(kù)和靜態(tài)庫(kù),與include目錄中的頭文件結(jié)合使用
libexec:各個(gè)服務(wù)對(duì)應(yīng)的shell配置文件所在目錄,可用于配置日志輸出目錄、啟動(dòng)參數(shù)等信息
sbin:hadoop管理腳本所在目錄,主要包含hdfs和yarn中各類(lèi)服務(wù)的啟動(dòng)、關(guān)閉腳本
share:hadoop各個(gè)模塊編譯后的jar包所在目錄。

cd  /home/hadoop/hadoop/etc/hadoop     #此目錄是存放配置文件的

vi hadoop-env.sh     #hadoop的變量設(shè)置腳本
#hadoop-3.1.0是第54行,hadoop-2.7.7是第25行

export JAVA_HOME=/usr/local/java

測(cè)試:
mkdir  /home/input

hadoop  jar /home/hadoop/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.0.jar  wordcount  /home/input  /home/output

hadoop單機(jī)及偽分布式

hdfs  dfs -ls / 

hadoop單機(jī)及偽分布式

cd /home/hadoop/hadoop/etc/hadoop/

vi  core-site.xml   #hadoopg公共文件,全局配置文件
添加以下幾行:
<configuration>
    <!--指定HADOOP所使用的文件系統(tǒng)schema(URI),HDFS的老大(NameNode)的地址-->
<property>
        <name>fs.defaultFS</name>   
        <value>hdfs://hadoop:9000</value>  
    </property>
        <!--指定HADOOP運(yùn)行時(shí)產(chǎn)生文件的存儲(chǔ)目錄-->
    <property>
        <name>hadoop.tmp.dir</name>    #指定臨時(shí)數(shù)據(jù)存儲(chǔ)目錄
        <value>/home/hadoop/hadoop/tmp</value>    #系統(tǒng)路徑
    </property>    
</configuration>

注意:在hadoop安裝目錄的文檔中有所有配置文件的默認(rèn)參數(shù)表,用戶(hù)可以查看后,根據(jù)實(shí)際情況進(jìn)行修改。
uri是使用自己的協(xié)議以及自己的地址端口

hadoop單機(jī)及偽分布式

/usr/local/hadoop/share/doc/hadoop/hadoop-project-dist/hadoop-common/core-default.html文檔中可以看到:
hadoop.tmp.dir的默認(rèn)值是/tmp/hadoop-${user.name}。/tmp/是Linux系統(tǒng)的臨時(shí)目錄,如果我們不重新指定的話(huà),默認(rèn)Hadoop工作目錄在Linux的臨時(shí)目錄,一旦Linux系統(tǒng)重啟,所有文件將會(huì)清空,包括元數(shù)據(jù)等信息都丟失了,需要重新進(jìn)行格式化,非常麻煩。

vi  hdfs-site.xml    #hdfs站點(diǎn)配置文件
添加以下幾行:
<configuration>
    <!--指定HDFS副本的數(shù)量-->
    <property>
        <name>dfs.replication</name>   #指定hdfs的副本數(shù)
        <value>1</value>   #指定副本數(shù)量
    </property>
<!--設(shè)置默認(rèn)端口,如果不加上會(huì)導(dǎo)致啟動(dòng)hadoop-3.1.0后無(wú)法訪(fǎng)問(wèn)50070端口查看HDFS管理界面,hadoop-2.x可以不加-->
    <property> 
        <name>dfs.http.address</name> 
        <value>192.168.80.100:50070</value> 
    </property>
</configuration>
注:
hdfs-default.xml文檔中可以看到:
dfs.replication的默認(rèn)值是3,由于HDFS的副本數(shù)不能大于DataNode數(shù),而我們此時(shí)安裝的hadoop中只有一個(gè)DataNode,所以將dfs.replication值改為1。
dfs.namenode.http-address在hadoop-3.1.0版本上的默認(rèn)值是?0.0.0.0:9870 ,在hadoop-2.7.7版本上的默認(rèn)值是0.0.0.0:50070,所以不同版本可以通過(guò)不同端口訪(fǎng)問(wèn)NameNode。

hadoop單機(jī)及偽分布式

cp mapred-site.xml.templete mapred-site.xml #重命名,hadoop-3.1.0系統(tǒng)中就是mapred-site.xml不需要改名,hadoop-2.x需要改名

vi mapred-site.xml #添加如下幾行,指定hadoop運(yùn)行在哪種計(jì)算框架上,這里指定yarn框架。
<!--指定mr運(yùn)行在yarn上-->
<property>
  <name>mapreduce.framework.name</name>   #指定MapReduce程序放在哪個(gè)服務(wù)上去啟用
  <value>yarn</value>
</property>

hadoop單機(jī)及偽分布式

vi yarn-env.xml    #2.x版本需要更改jdk路徑
export JAVA_HOME = 

vi yarn-site.xml #添加如下幾行
<configuration>
    <!-- 指定YARN集群的老大(ResourceManager)的地址-->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop</value>
    </property>
    <!-- 指定reducer獲取數(shù)據(jù)的方式-->
    <property>
        <name>yarn.nodemanager.aux-services</name>   #
        <value>mapreduce_shuffle</value>
    </property>
</configuration>

hadoop單機(jī)及偽分布式

8、免密碼交互
ssh-keygen -t rsa    #生成ssh密鑰對(duì)
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): #直接回車(chē)
Enter passphrase (empty for no passphrase): #直接回車(chē)
Enter same passphrase again: #直接回車(chē)
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:9NevFFklAS5HaUGJtVrfAlbYk82bStTwPvHIWY7as38 root@hadoop
The key's randomart image is:
+---[RSA 2048]----+
|                               |
|                               |
|                               |
|     .                         |
|    . o S =                |
|     ..O * =               |
|     =X.%.E . .        |
|    *+=%oBo+.o    |
|   o=B+o++o.oo.  |
+----[SHA256]-----+

cd /root/.ssh/
ls 
id_rsa  id_rsa.pub  known_hosts

注:
#id_rsa為私鑰,id_rsa.pub為公鑰

因?yàn)榇罱ǖ氖莌adoop偽分布式,所以namenode與datanode都在一個(gè)節(jié)點(diǎn)上。
cp id_rsa.pub authorized_keys #使主機(jī)之間可以免密碼登錄

ssh hadoop date #查看(不需要輸入密碼,直接輸出結(jié)果,說(shuō)明免密成功)

9、啟動(dòng)hadoop集群
1)首先格式化NameNode

注意:如果格式化NameNode之后運(yùn)行過(guò)hadoop,然后又想再格式化一次NameNode,那么需要先刪除第一次運(yùn)行Hadoop后產(chǎn)生的VERSION文件,否則會(huì)出錯(cuò),詳情見(jiàn)第四部分問(wèn)題4。

cd
[root@hadoop ~]# hdfs namenode -format #中間沒(méi)有報(bào)錯(cuò)并且最后顯示如下信息表示格式化成功
...
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at hadoop/192.168.80.100
************************************************************/

hadoop單機(jī)及偽分布式


格式化完成后,系統(tǒng)會(huì)在dfs.data.dir目錄下生成元數(shù)據(jù)信息。

name/current
data/current

bin/hdfs  namenode -format

sbin/hadoop-daemon.sh start namenode

sbin/hadoop-daemon.sh start   datanode
或者:
start-dfs.sh
start-yarn.sh

2)輸入 start-all.sh 啟動(dòng)
start-all.sh
Starting namenodes on [hadoop]
上一次登錄:四 4月 18 23:06:27 CST 2019從 192.168.80.1pts/1 上
Starting datanodes
上一次登錄:四 4月 18 23:53:44 CST 2019pts/1 上
localhost: Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.
Starting secondary namenodes [hadoop]
上一次登錄:四 4月 18 23:53:46 CST 2019pts/1 上
2019-04-18 23:54:08,969 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Starting resourcemanager
上一次登錄:四 4月 18 23:54:03 CST 2019pts/1 上
Starting nodemanagers
上一次登錄:四 4月 18 23:54:10 CST 2019pts/1 上

3)執(zhí)行 jps 驗(yàn)證集群是否啟動(dòng)成功

 jps #顯示以下幾個(gè)進(jìn)程說(shuō)明啟動(dòng)成功
96662 Jps
95273 DataNode #可有可無(wú)
95465 SecondaryNameNode #重要
95144 NameNode #重要
95900 NodeManager #可有可無(wú)
95775 ResourceManager #非常重要

hadoop單機(jī)及偽分布式


4)登錄HDFS管理界面(NameNode):http://ip:50070

hadoop單機(jī)及偽分布式

5)登錄MR管理界面: http://ip:8088

hadoop單機(jī)及偽分布式


使用:
上傳文件到hdfs中:
hadoop  fs  -put  aa    hdfs://192.168.80.100:9000/
注:aa是要上傳的文件名

hadoop單機(jī)及偽分布式

hadoop單機(jī)及偽分布式


簡(jiǎn)寫(xiě):
hadoop  fs -put  aa  /

從hdfs中下載文件:
hadoop  fs  -get hdfs://192.168.80.100:9000/aa

hadoop單機(jī)及偽分布式

在hdfs中創(chuàng)建目錄:
hadoop  fs  -mkdir  hdfs://192.168.80.100:9000/word
也可以簡(jiǎn)寫(xiě):
hadoop  fs  -mkdir  /word

hadoop單機(jī)及偽分布式


調(diào)用MapReduce程序:
hadoop  jar   hadoop-mapreduce-examples~   pi  5   5

注:
pi:主類(lèi),計(jì)算圓周率
5:參數(shù),map的任務(wù)數(shù)量
5:每個(gè)map的取樣數(shù)

hadoop  jar  hadoop-mapreduce-example~   word   /word/input   /word/output

hadoop  fs -ls  /word/output

hadoop fs  -cat   /word/output/part~

HDFS的實(shí)現(xiàn)思想:
1、hdfs是通過(guò)分布式集群來(lái)存儲(chǔ)文件
2、文件存儲(chǔ)到hdfs集群中去的時(shí)候是被切分成block的
3、文件的block存放在若干臺(tái)datanode節(jié)點(diǎn)上
4、hdfs文件系統(tǒng)中的文件與真實(shí)的block之間有映射關(guān)系,由namenode管理
5、每一個(gè)block在集群中會(huì)存儲(chǔ)多個(gè)副本,好處是可以提高數(shù)據(jù)的可靠性,還可以提高訪(fǎng)問(wèn)的吞吐量

我們可以看到不管是啟動(dòng)還是關(guān)閉hadoop集群,系統(tǒng)都會(huì)報(bào)如下錯(cuò)誤:
 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

解決方式:先看看我們安裝的hadoop是否是64位的
[root@hadoop hadoop]# file /usr/local/hadoop/lib/native/libhadoop.so.1.0.0  #出現(xiàn)以下信息表示我們的hadoop是64位的
/usr/local/hadoop/lib/native/libhadoop.so.1.0.0: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=8d84d1f56b8c218d2a33512179fabffbf237816a, not stripped

永久解決方式:
vi /usr/local/hadoop/etc/hadoop/log4j.properties #在文件末尾添加如下一句,保存退出
log4j.logger.org.apache.hadoop.util.NativeCodeLoader=Error

配置說(shuō)明

    JDK :Hadoop和Spark 依賴(lài)的配置,官方建議JDK版本在1.7以上?。?!
    Scala:Spark依賴(lài)的配置,建議版本不低于spark的版本。
    Hadoop: 是一個(gè)分布式系統(tǒng)基礎(chǔ)架構(gòu)。
    Spark: 分布式存儲(chǔ)的大數(shù)據(jù)進(jìn)行處理的工具。
    zookeeper:分布式應(yīng)用程序協(xié)調(diào)服務(wù),HBase集群需要。
    HBase: 一個(gè)結(jié)構(gòu)化數(shù)據(jù)的分布式存儲(chǔ)系統(tǒng)。
    Hive: 基于Hadoop的一個(gè)數(shù)據(jù)倉(cāng)庫(kù)工具,目前的默認(rèn)元數(shù)據(jù)庫(kù)是mysql。

配置歷史服務(wù)器
vi mapred-site.xml
<!-- 歷史服務(wù)器端地址 -->
<property>
    <name>mapreduce.jobhistory.address</name>
    <value>hadoop:10020</value>
</property>
<!-- 歷史服務(wù)器web端地址 -->
<property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>hadoop:19888</value>
<property>

啟動(dòng)歷史服務(wù)器:
sbin/mr-jobhistory-daemon.sh start historyserver

查看歷史服務(wù)器是否啟動(dòng)
jps

查看jobhistory:
192.168.80.100:19888

配置日志聚集
日志聚集:應(yīng)用運(yùn)行完成以后,將程序運(yùn)行日志信息上傳到HDFS系統(tǒng)上
好處:可以方便的查看到程序運(yùn)行詳情,方便開(kāi)發(fā)調(diào)試

注:開(kāi)啟日志聚集功能,需要重新啟動(dòng)NodeManager、ResourceManager和HistoryManager

步驟:

關(guān)閉所有
sbin/mr-jobhistory-daemon.sh  stop  historyserver
sbin/yarn-daemon.sh stop nodemanager
sbin/yarn-daemon.sh stop resourcemanager

jps

vi yarn-site.xml

<!-- 日志聚集功能使能 -->
<property>
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
</property>
<!-- 日志保留時(shí)間設(shè)置7天 -->
<property>
    <name>yarn.log-aggregation.retain-seconds</name>
    <value>604800</value>
<property>

sbin/yarn-daemon.sh start resourcemanager
sbin/yarn-daemon.sh start nodemanager
sbin/mr-jobhistory-daemon.sh  start  historyserver

測(cè)試:
hadoop  jar   hadoop-mapreduce-examples~   pi  5   5
向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI