1. 程式人生 > >54.HDFS分布式文件系統

54.HDFS分布式文件系統

linux

HDFS分布式文件系統

HDFS系統借助於一款hadoop工具進行部署,文件系統的主要優勢是主要是提高客戶端的讀取效率,假如一塊1TB的磁盤數據需要讀取,讀取速度為100MB/S,如果將1塊磁盤中的數據分別存儲到100塊磁盤上,那麽當用戶讀取時,它們並行運行,那麽用戶讀取操作就可以瞬間完成。

一個HDFS群集由一個運行於master上的Namenode和多個運行於slave上的Datanode組成。

Namenode負責管理文件系統的命名空間和客戶端對文件系統的訪問操作。

Datanode負責管理存儲的數據。

文件以塊形式進行在datanode中存儲,假設一個塊20MB,塊的副本數為3,設置塊的副本數來達到冗余效果,防止單個

datanode磁盤故障後數據丟失。將相同的副本塊存儲到不同的datanode中實現冗余,大文件將被切成小塊存儲。

DHFS文件系統搭建步驟:

MasterSlave服務器的先決環境:

v 關閉防火墻等基本操作

# iptables -F

# setenforce 0

# ifconfig

v 配置hosts解析

# vim /etc/hosts

修改內容:

192.168.0.133 master

192.168.0.134 slave1

192.168.0.135 slave2

v 修改主機名

# vim /etc/sysconfig/network

修改內容:

NETWORKING=yes

HOSTNAME=master

# hostname master

Master服務器上:

v 創建hadoop運行用戶和密碼

# useradd hadoop

# passwd hadoop

v 部署JAVA環境

# tar xzvf jdk-7u65-linux-x64.gz

# mv jdk1.7.0_65/ /usr/local/java

v 安裝hadoop軟件

# tar xzvf hadoop-2.4.0.tar.gz

# mv hadoop-2.4.0 /usr/local/hadoop

# chown -R hadoop.hadoop /usr/local/hadoop

v 設置環境變量

# vim /etc/profile

添加內容:

JAVA_HOME=/usr/local/java

HADOOP_HOME=/usr/local/hadoop

PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

# source /etc/profile

v 修改hadoop配置文件

# vim /usr/local/hadoop/etc/hadoop/hadoop-env.sh Hadoop的環境文件

添加內容:

JAVA_HOME=/usr/local/java

# vim /usr/local/hadoop/etc/hadoop/core-site.xml 核心配置文件

添加內容:

<configuration>

<property>

<name>fs.defaultFS</name>

<value>hdfs://master:9000</value> <!--NamenodeIP:端口-->

</property>

<property>

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

<value>file:/usr/local/hadoop/tmp</value> <!--Hadoop臨時緩存目錄-->

<description>hadoop</description>

</property>

</configuration>

# cp /usr/local/hadoop/etc/hadoop/mapred-site.xml.template /usr/local/hadoop/etc/hadoop/mapred-site.xml

# vim /usr/local/hadoop/etc/hadoop/mapred-site.xml Hadoop的進程配置文件

添加內容:

<configuration>

<property>

<name>mapred.job.tracker</name> <!--服務器進程的配置項-->

<value>master:9001</value> <!--指定為Master端口號為9001-->

</property>

<property>

<name>mapred.local.dir</name> <!--可以配置多塊磁盤,逗號分隔-->

<value>/usr/local/hadoop/var</value> <!--本地計算臨時數據存放位置-->

</property>

</configuration>

# vim /usr/local/hadoop/etc/hadoop/hdfs-site.xml NamenodeDatanode配置文件

添加內容:

<configuration>

<property>

<name>dfs.namenode.name.dir</name> <!--配置Namenode工作目錄-->

<value>file:/usr/local/hadoop/name</value>

</property>

<property>

<name>dfs.datanade.data.dir</name> <!--配置Datanode工作目錄-->

<value>file:/usr/local/hadoop/data</value> <!--存放塊數據文件目錄-->

</property>

<property>

<name>dfs.replication</name> <!--配置文件塊副本數根據slave的數量為單位-->

<value>3</value>

</property>

<property>

<name>dfs.webhdfs.enable</name> <!--啟用Web訪問的HDFS-->

<value>true</value>

</property>

</configuration>

註:

Namenode負責管理文件系統的命名空間和客戶端對文件系統的訪問操作。

Datanode負責管理存儲的數據。

# vim /usr/local/hadoop/etc/hadoop/masters

添加內容:

master

# vim /usr/local/hadoop/etc/hadoop/slaves

添加內容:

Slave1

Slave2

v 部署SSH配置免驗證開啟Hadoop

# su hadoop

$ ssh-keygen

$ ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]1

$ ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]2

$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

v 通過SSHJAVA,HADOOP配置文件同步到Slave服務器

# scp -r /usr/local/hadoop slave1:/usr/local/

# scp -r /usr/local/java slave1:/usr/local/

# scp -r /etc/profile slave1:/etc/

# scp -r /usr/local/hadoop slave2:/usr/local/

# scp -r /usr/local/java slave2:/usr/local/

# scp -r /etc/profile slave2:/etc/

Slave服務器上:

#source /etc/profile

#chown -R hadoop.hadoop /usr/local/hadoop

部署完後HDFS群集的操作:

Master服務器上操作:

v 格式化HDFS文件系統

#su hadoop

$hdfs namenode -format

看到下面的日誌信息則成功格式化:

16/10/13 10:50:22 INFO common.Storage: Storage directory /usr/local/hadoop/name has been successfully formatted.

v 檢查新生成的目錄

$ ll /usr/local/hadoop/name/

看到:

drwxr-xr-x. 2 root root 4096 1013 10:50 current

v 啟動hadoop群集

$ /usr/local/hadoop/sbin/start-all.sh

v 驗證HDFS節點各進程是否正常

Master上顯示:

[[email protected] Desktop]$ jps

6114 NameNode

6438 ResourceManager

6579 Jps

6304 SecondaryNameNode

Slaves上顯示:[[email protected] 桌面]# jps

5387 Jps

5303 NodeManager

5191 DataNode

v 驗證訪問

訪問https//192.168.0.133:50070 可以看到視圖系統

DHFS群集添加節點:

2 關閉防火墻等基本操作

2 配置host解析

2 修改主機名

2 部署JAVA環境

2 設置環境變量

2 安裝hadoop軟件

2 Master服務器通過SSH同步配置文件到節點服務器

2 新節點啟動並平衡節點已經存儲的數據

$hadoop-daemon.sh start datanode

$hadoop-daemon.sh start tasktracker

$jps

$hadoop dfsadmin -report 查看群集信息

DHFS群集刪除節點:

$ vim /usr/local/hadoop/etc/hadoop/core-site.xml

添加內容:

<property>

<name>dfs.hosts.exclude</name>

<value>/usr/localhadoop/etc/hadoop/exclude</value> <!--建立排除的節點-->

</property>

$vim /usr/local/hadoop/etc/hadoop/excludes

添加內容:

slave4 要刪除的節點名

$hdfs dfsadmin -refreshnodes 刷新配置

$jps

$hadoop dfsadmin -report 查看群集信息

Hadoop基本命令的使用

命令

作用

Hadoop fs -help

幫助

Hadoop fs -usage

幫助

Hadoop fs -ls

顯示

Hadoop fs -mkdir

創建

Hadoop fs -put

上傳

Hadoop fs -report

查看節點狀態信息

Hadoop dfsadmin -safemode enter

開啟安全模式

Hadoop dfsadmin -safemode leave

開啟安全模式

Hadoop fs -copyfromlocal 本地源文件 HDFS目標目錄

將本地文件復制到HDFS

Hadoop fs -copylocal HDFS文件 本地

HDFS中的文件復制到本地

Hadoop fs -chgrp 組名 DHFS文件或目錄

修改屬組

Hadoop fs -chmode 755 DHFS文件或目錄

修改權限

Hadoop fs -chown 屬主.屬組 DHFS文件或目錄

修改所有者

Hadoop fs -du DHFS文件或目錄

統計顯示目錄中文件大小

Hadoop fs -getmerge -nl DHFS文件 本地文件

合並文件


54.HDFS分布式文件系統