内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

HDFS偽分布式環(huán)境搭建

HDFS概述及設(shè)計(jì)目標(biāo)

什么是HDFS:

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、重慶小程序開發(fā)公司、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了北碚免費(fèi)建站歡迎大家使用!

  • 是Hadoop實(shí)現(xiàn)的一個(gè)分布式文件系統(tǒng)(Hadoop Distributed File System),簡(jiǎn)稱HDFS
  • 源自于Google的GFS論文
  • 論文發(fā)表于2003年,HDFS是GFS的克隆版

HDFS的設(shè)計(jì)目標(biāo):

  • 非常巨大的分布式文件系統(tǒng)
  • 運(yùn)行在普通廉價(jià)的硬件上
  • 易擴(kuò)展、為用戶×××能不錯(cuò)的文件存儲(chǔ)服務(wù),也就是容錯(cuò)性

HDFS官方文檔地址如下:

https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html


HDFS架構(gòu)

HDFS是主/從式的架構(gòu)。一個(gè)HDFS集群會(huì)有一個(gè)NameNode(簡(jiǎn)稱NN),也就是命名節(jié)點(diǎn),該節(jié)點(diǎn)作為主服務(wù)器存在(master server)。NameNode用于管理文件系統(tǒng)的命名空間以及調(diào)節(jié)客戶訪問文件。此外,還會(huì)有多個(gè)DataNode(簡(jiǎn)稱DN),也就是數(shù)據(jù)節(jié)點(diǎn),數(shù)據(jù)節(jié)點(diǎn)作為從節(jié)點(diǎn)存在(slave server)。通常每一個(gè)集群中的DataNode,都會(huì)被NameNode所管理,DataNode用于存儲(chǔ)數(shù)據(jù)。

HDFS公開了文件系統(tǒng)名稱空間,允許用戶將數(shù)據(jù)存儲(chǔ)在文件中,就好比我們平時(shí)使用操作系統(tǒng)中的文件系統(tǒng)一樣,用戶無需關(guān)心底層是如何存儲(chǔ)數(shù)據(jù)的。而在底層,一個(gè)文件會(huì)被分成一個(gè)或多個(gè)數(shù)據(jù)塊,這些數(shù)據(jù)塊會(huì)被存儲(chǔ)在一組數(shù)據(jù)節(jié)點(diǎn)中。在CDH中數(shù)據(jù)塊的默認(rèn)大小是128M,這個(gè)大小我們可以通過配置文件進(jìn)行調(diào)節(jié)。在NameNode上我們可以執(zhí)行文件系統(tǒng)的命名空間操作,例如打開,關(guān)閉,重命名文件等。這也決定了數(shù)據(jù)塊到數(shù)據(jù)節(jié)點(diǎn)的映射。

我們可以來看看HDFS的架構(gòu)圖:
HDFS偽分布式環(huán)境搭建

HDFS被設(shè)計(jì)為可以運(yùn)行在普通的廉價(jià)機(jī)器上,而這些機(jī)器通常運(yùn)行著一個(gè)Linux操作系統(tǒng)。HDFS是使用java語言編寫的,任何支持java的機(jī)器都可以運(yùn)行HDFS。使用高度可移植的java語言編寫的HDFS,意味著可以部署在廣泛的機(jī)器上。一個(gè)典型的HDFS集群部署會(huì)有一個(gè)專門的機(jī)器只能運(yùn)行NameNode,而其他集群中的機(jī)器各自運(yùn)行一個(gè)DataNode實(shí)例。雖然一臺(tái)機(jī)器上也可以運(yùn)行多個(gè)節(jié)點(diǎn),但是并不建議這么做,除非是學(xué)習(xí)環(huán)境。

總結(jié):

  • HDFS是主/從式的架構(gòu),一個(gè)HDFS集群會(huì)有一個(gè)NameNode以及多個(gè)DataNode
  • 一個(gè)文件會(huì)被拆分為多個(gè)數(shù)據(jù)塊進(jìn)行存儲(chǔ),默認(rèn)數(shù)據(jù)塊大小是128M
  • 即便一個(gè)數(shù)據(jù)塊大小為130M,也會(huì)被拆分為2個(gè)Block,一個(gè)大小為128M,一個(gè)大小為2M
  • HDFS是使用Java編寫的,使得其可以運(yùn)行在安裝了JDK的操作系統(tǒng)之上

NN:

  • 負(fù)責(zé)客戶端請(qǐng)求的響應(yīng)
  • 負(fù)責(zé)元數(shù)據(jù)(文件的名稱、副本系數(shù)、Block存放的DN)的管理

DN:

  • 存儲(chǔ)用戶的文件對(duì)應(yīng)的數(shù)據(jù)塊(Block)
  • 會(huì)定期向NN發(fā)送心跳信息,匯報(bào)本身及其所有的block信息和健康狀況

HDFS副本機(jī)制

在HDFS中,一個(gè)文件會(huì)被拆分為一個(gè)或多個(gè)數(shù)據(jù)塊。默認(rèn)情況下,每個(gè)數(shù)據(jù)塊都會(huì)有三個(gè)副本。每個(gè)副本都會(huì)被存放在不同的機(jī)器上,而且每一個(gè)副本都有自己唯一的編號(hào)。

如下圖:
HDFS偽分布式環(huán)境搭建


HDFS副本存放策略

NameNode節(jié)點(diǎn)選擇一個(gè)DataNode節(jié)點(diǎn)去存儲(chǔ)block副本得過程就叫做副本存放,這個(gè)過程的策略其實(shí)就是在可靠性和讀寫帶寬間得權(quán)衡。

《Hadoop權(quán)威指南》中的默認(rèn)方式:

  • 第一個(gè)副本會(huì)隨機(jī)選擇,但是不會(huì)選擇存儲(chǔ)過滿的節(jié)點(diǎn)。
  • 第二個(gè)副本放在和第一個(gè)副本不同且隨機(jī)選擇的機(jī)架上。
  • 第三個(gè)和第二個(gè)放在同一個(gè)機(jī)架上的不同節(jié)點(diǎn)上。
  • 剩余的副本就完全隨機(jī)節(jié)點(diǎn)了。

如下圖:
HDFS偽分布式環(huán)境搭建

可以看出這個(gè)方案比較合理:

  1. 可靠性:block存儲(chǔ)在兩個(gè)機(jī)架上
  2. 寫帶寬:寫操作僅僅穿過一個(gè)網(wǎng)絡(luò)交換機(jī)
  3. 讀操作:選擇其中得一個(gè)機(jī)架去讀
  4. block分布在整個(gè)集群上。

HDFS偽分布式環(huán)境搭建

官方安裝文檔地址如下:

http://archive.cloudera.com/cdh6/cdh/5/hadoop-2.6.0-cdh6.7.0/hadoop-project-dist/hadoop-common/SingleCluster.html

環(huán)境描述:

  • CentOS7.3
  • JDK1.8
  • Hadoop 2.6.0-cdh6.7.0

下載Hadoop 2.6.0-cdh6.7.0的tar.gz包并解壓:

[root@localhost ~]# cd /usr/local/src/
[root@localhost /usr/local/src]# wget http://archive.cloudera.com/cdh6/cdh/5/hadoop-2.6.0-cdh6.7.0.tar.gz
[root@localhost /usr/local/src]# tar -zxvf hadoop-2.6.0-cdh6.7.0.tar.gz -C /usr/local/

注:如果在Linux上下載得很慢的話,可以在windows的迅雷上使用這個(gè)鏈接進(jìn)行下載。然后再上傳到Linux中,這樣就會(huì)快一些。

解壓完后,進(jìn)入到解壓后的目錄下,可以看到hadoop的目錄結(jié)構(gòu)如下:

[root@localhost /usr/local/src]# cd /usr/local/hadoop-2.6.0-cdh6.7.0/
[root@localhost /usr/local/hadoop-2.6.0-cdh6.7.0]# ls
bin             cloudera  examples             include  libexec      NOTICE.txt  sbin   src
bin-mapreduce1  etc       examples-mapreduce1  lib      LICENSE.txt  README.txt  share
[root@localhost /usr/local/hadoop-2.6.0-cdh6.7.0]#

簡(jiǎn)單說明一下其中幾個(gè)目錄存放的東西:

  • bin目錄存放可執(zhí)行文件
  • etc目錄存放配置文件
  • sbin目錄下存放服務(wù)的啟動(dòng)命令
  • share目錄下存放jar包與文檔

以上就算是把hadoop給安裝好了,接下來就是編輯配置文件,把JAVA_HOME配置一下:

[root@localhost /usr/local/hadoop-2.6.0-cdh6.7.0]# cd etc/
[root@localhost /usr/local/hadoop-2.6.0-cdh6.7.0/etc]# cd hadoop
[root@localhost /usr/local/hadoop-2.6.0-cdh6.7.0/etc/hadoop]# vim hadoop-env.sh
export JAVA_HOME=/usr/local/jdk1.8/  # 根據(jù)你的環(huán)境變量進(jìn)行修改

由于我們要進(jìn)行的是單節(jié)點(diǎn)偽分布式環(huán)境的搭建,所以還需要配置兩個(gè)配置文件,分別是core-site.xml以及hdfs-site.xml,如下:

[root@localhost /usr/local/hadoop-2.6.0-cdh6.7.0/etc/hadoop]# vim core-site.xml  # 增加如下內(nèi)容
<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://192.168.77.130:8020</value>  # 指定默認(rèn)的訪問地址以及端口號(hào)
    </property>
    <property>
        <name>hadoop.tmp.dir</name>  # 指定臨時(shí)文件所存放的目錄
        <value>/data/tmp/</value>
    </property>
</configuration>
[root@localhost /usr/local/hadoop-2.6.0-cdh6.7.0/etc/hadoop]# mkdir /data/tmp/
[root@localhost /usr/local/hadoop-2.6.0-cdh6.7.0/etc/hadoop]# vim hdfs-site.xml  # 增加如下內(nèi)容
<configuration>
    <property>
        <name>dfs.replication</name>  # 指定只產(chǎn)生一個(gè)副本
        <value>1</value>
    </property>
</configuration>

然后配置一下密鑰對(duì),設(shè)置本地免密登錄,搭建偽分布式的話這一步是必須的:

[root@localhost ~]# ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
Generating public/private dsa key pair.
Your identification has been saved in /root/.ssh/id_dsa.
Your public key has been saved in /root/.ssh/id_dsa.pub.
The key fingerprint is:
c2:41:89:65:bd:04:9e:3e:3f:f9:a7:51:cd:e9:cf:1e root@localhost
The key's randomart image is:
+--[ DSA 1024]----+
|     o=+         |
|    .+..o        |
|      +. .       |
|     o ..    o . |
|      = S   . +  |
|       + . . .   |
|        + .   .E |
|         o ..  o.|
|          oo   .+|
+-----------------+
[root@localhost ~]# cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
[root@localhost ~]# ssh localhost
ssh_exchange_identification: read: Connection reset by peer
[root@localhost ~]# 

如上,測(cè)試本地免密登錄的時(shí)候報(bào)了個(gè)ssh_exchange_identification: read: Connection reset by peer錯(cuò)誤,于是著手排查錯(cuò)誤,發(fā)現(xiàn)是/etc/hosts.allow文件里限制了IP,于是修改一下該配置文件即可,如下:

[root@localhost ~]# vim /etc/hosts.allow  #  修改為 sshd: ALL
[root@localhost ~]# service sshd restart
[root@localhost ~]# ssh localhost  # 測(cè)試登錄成功
Last login: Sat Mar 24 21:56:38 2018 from localhost
[root@localhost ~]# logout
Connection to localhost closed.
[root@localhost ~]# 

接下來就可以啟動(dòng)HDFS了,不過在啟動(dòng)之前需要先格式化文件系統(tǒng):

[root@localhost ~]# /usr/local/hadoop-2.6.0-cdh6.7.0/bin/hdfs namenode -format

注:只有第一次啟動(dòng)才需要格式化

使用服務(wù)啟動(dòng)腳本啟動(dòng)服務(wù):

[root@localhost ~]# /usr/local/hadoop-2.6.0-cdh6.7.0/sbin/start-dfs.sh
18/03/24 21:59:03 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Starting namenodes on [192.168.77.130]
192.168.77.130: namenode running as process 8928. Stop it first.
localhost: starting datanode, logging to /usr/local/hadoop-2.6.0-cdh6.7.0/logs/hadoop-root-datanode-localhost.out
Starting secondary namenodes [0.0.0.0]
The authenticity of host '0.0.0.0 (0.0.0.0)' can't be established.
ECDSA key fingerprint is 63:74:14:e8:15:4c:45:13:9e:16:56:92:6a:8c:1a:84.
Are you sure you want to continue connecting (yes/no)? yes  # 第一次啟動(dòng)會(huì)詢問是否連接節(jié)點(diǎn)
0.0.0.0: Warning: Permanently added '0.0.0.0' (ECDSA) to the list of known hosts.
0.0.0.0: starting secondarynamenode, logging to /usr/local/hadoop-2.6.0-cdh6.7.0/logs/hadoop-root-secondarynamenode-localhost.out
18/03/24 21:59:22 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
[root@localhost ~]# jps  # 檢查是否有以下幾個(gè)進(jìn)程,如果少了一個(gè)都是不成功的
8928 NameNode
9875 Jps
9578 DataNode
9757 SecondaryNameNode
[root@localhost ~]# netstat -lntp |grep java  # 檢查端口
tcp        0      0 0.0.0.0:50090           0.0.0.0:*               LISTEN      9757/java           
tcp        0      0 192.168.77.130:8020     0.0.0.0:*               LISTEN      8928/java           
tcp        0      0 0.0.0.0:50070           0.0.0.0:*               LISTEN      8928/java           
tcp        0      0 0.0.0.0:50010           0.0.0.0:*               LISTEN      9578/java           
tcp        0      0 0.0.0.0:50075           0.0.0.0:*               LISTEN      9578/java           
tcp        0      0 0.0.0.0:50020           0.0.0.0:*               LISTEN      9578/java           
tcp        0      0 127.0.0.1:53703         0.0.0.0:*               LISTEN      9578/java           
[root@localhost ~]# 

然后將Hadoop的安裝目錄配置到環(huán)境變量中,方便之后使用它的命令:

[root@localhost ~]# vim ~/.bash_profile  # 增加以下內(nèi)容
export HADOOP_HOME=/usr/local/hadoop-2.6.0-cdh6.7.0/
export PATH=$HADOOP_HOME/bin:$PATH
[root@localhost ~]# source !$
source ~/.bash_profile
[root@localhost ~]#

確認(rèn)服務(wù)啟動(dòng)成功后,使用瀏覽器訪問192.168.77.130:50070,會(huì)訪問到如下頁(yè)面:
HDFS偽分布式環(huán)境搭建

點(diǎn)擊Live Nodes查看活著的節(jié)點(diǎn):
HDFS偽分布式環(huán)境搭建

如上,可以看到節(jié)點(diǎn)的信息。到此,我們偽分布式的hadoop集群就搭建完成了。


HDFS shell操作

以上已經(jīng)介紹了如何搭建偽分布式的Hadoop,既然環(huán)境已經(jīng)搭建起來了,那要怎么去操作呢?這就是本節(jié)將要介紹的內(nèi)容:

HDFS自帶有一些shell命令,通過這些命令我們可以去操作HDFS文件系統(tǒng),這些命令與Linux的命令挺相似的,如果熟悉Linux的命令很容易就可以上手HDFS的命令,關(guān)于這些命令的官方文檔地址如下:

http://archive.cloudera.com/cdh6/cdh/5/hadoop-2.6.0-cdh6.7.0/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapredCommands.html

以下介紹幾個(gè)常用的命令:

首先我們創(chuàng)建一個(gè)測(cè)試文件:

[root@localhost ~]# cd /data/
[root@localhost /data]# vim hello.txt  # 隨便寫一些內(nèi)容
hadoop welcome
hadoop hdfs mapreduce
hadoop hdfs
[root@localhost /data]# 

1.查看文件系統(tǒng)的根目錄:

[root@localhost /data]# hdfs dfs -ls /
[root@localhost /data]#

2.將剛剛創(chuàng)建的文件拷貝到文件系統(tǒng)的根目錄下:

[root@localhost /data]# hdfs dfs -put ./hello.txt /
[root@localhost /data]# hdfs dfs -ls /
Found 1 items
-rw-r--r--   1 root supergroup         49 2018-03-24 22:37 /hello.txt
[root@localhost /data]# 

3.查看文件內(nèi)容:

[root@localhost /data]# hdfs dfs -cat /hello.txt
hadoop welcome
hadoop hdfs mapreduce
hadoop hdfs
[root@localhost /data]# 

4.創(chuàng)建目錄:

[root@localhost /data]# hdfs dfs -mkdir /test
[root@localhost /data]# hdfs dfs -ls /
Found 2 items
-rw-r--r--   1 root supergroup         49 2018-03-24 22:37 /hello.txt
drwxr-xr-x   - root supergroup          0 2018-03-24 22:40 /test
[root@localhost /data]# 

5.遞歸創(chuàng)建目錄:

[root@localhost /data]# hdfs dfs -mkdir -p /test/a/b/c

6.遞歸查看目錄:

[root@localhost /data]# hdfs dfs -ls -R /
-rw-r--r--   1 root supergroup         49 2018-03-24 23:02 /hello.txt
drwxr-xr-x   - root supergroup          0 2018-03-24 23:04 /test
drwxr-xr-x   - root supergroup          0 2018-03-24 23:04 /test/a
drwxr-xr-x   - root supergroup          0 2018-03-24 23:04 /test/a/b
drwxr-xr-x   - root supergroup          0 2018-03-24 23:04 /test/a/b/c
[root@localhost /data]# 

7.拷貝文件:

[root@localhost /data]# hdfs dfs -copyFromLocal ./hello.txt /test/a/b
[root@localhost /data]# hdfs dfs -ls -R /
-rw-r--r--   1 root supergroup         49 2018-03-24 23:02 /hello.txt
drwxr-xr-x   - root supergroup          0 2018-03-24 23:04 /test
drwxr-xr-x   - root supergroup          0 2018-03-24 23:04 /test/a
drwxr-xr-x   - root supergroup          0 2018-03-24 23:06 /test/a/b
drwxr-xr-x   - root supergroup          0 2018-03-24 23:04 /test/a/b/c
-rw-r--r--   1 root supergroup         49 2018-03-24 23:06 /test/a/b/hello.txt
[root@localhost /data]# 

8.從文件系統(tǒng)中拿出文件:

[root@localhost /data]# hdfs dfs -get /test/a/b/hello.txt

9.刪除文件:

[root@localhost /data]# hdfs dfs -rm /hello.txt
Deleted /hello.txt
[root@localhost /data]# 

10.刪除目錄:

[root@localhost /data]# hdfs dfs -rm -R /test
Deleted /test
[root@localhost /data]# 

以上就是最為常用的一些操作命令了,如果需要使用其他命令,直接執(zhí)行hdfs dfs就可以查看到所支持的所有命令。

接下來我們?cè)跒g覽器里查看文件系統(tǒng),首先將剛剛刪除的文件put回去:

[root@localhost /data]# hdfs dfs -put ./hello.txt /

在瀏覽器上查看文件系統(tǒng):
HDFS偽分布式環(huán)境搭建

查看文件的信息:
HDFS偽分布式環(huán)境搭建

可以看到關(guān)于該文件的詳細(xì)信息:
HDFS偽分布式環(huán)境搭建

由于這個(gè)文件太小了,所以只有一個(gè)數(shù)據(jù)塊。

我們來put一個(gè)比較大的文件,例如我們之前使用的Hadoop的安裝包:

[root@localhost /data]# cd /usr/local/src/
[root@localhost /usr/local/src]# hdfs dfs -put ./hadoop-2.6.0-cdh6.7.0.tar.gz /

如下,可以看到,這個(gè)文件被分為了三個(gè)數(shù)據(jù)塊:
HDFS偽分布式環(huán)境搭建

標(biāo)題名稱:HDFS偽分布式環(huán)境搭建
轉(zhuǎn)載來于:http://m.rwnh.cn/article10/jipedo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、Google、微信公眾號(hào)動(dòng)態(tài)網(wǎng)站、網(wǎng)站設(shè)計(jì)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)
定州市| 东宁县| 红桥区| 铜鼓县| 横峰县| 牡丹江市| 崇文区| 锡林郭勒盟| 湾仔区| 八宿县| 肃南| 扶沟县| 怀集县| 柳河县| 岑巩县| 黄冈市| 寿阳县| 福建省| 通榆县| 阜宁县| 金沙县| 黔南| 曲麻莱县| 工布江达县| 正阳县| 汝南县| 台北县| 丹棱县| 天祝| 巴彦县| 泸水县| 和平区| 东台市| 巫溪县| 新丰县| 长春市| 宜君县| 汝城县| 中江县| 府谷县| 西峡县|