HDFS分佈式文件系統

HDFS分佈式文件系統java

1、HDFS服務簡介node

HDFSHadoop File System的縮寫,即Hadoop文件系統。是一種以Hadoop集羣實現可以快速存儲,數據備份,實現冗餘,快速訪問網絡服務,。HadoopApache軟件基金會的開源分佈式計算平臺。linux

一個HDFS集羣由一個運行於master上的NameNode和若干個運行於Slave節點的DataNode組成。NameNode負責管理文件系統命名空間和客戶端對文件系統的訪問操做;DataNode負責存儲的數據。文件以塊形式在DataNode中存儲,假設一個塊大小設置爲50MB,塊的副本數爲3(經過設置塊的副本數來達到冗餘效果,防止單個DataNode磁盤故障後數據丟失),一個40MB的文件將存儲在一個塊中,而後將相同的3個塊存儲在3DataNode中實現冗餘。大文件將被切成小塊存儲。web

2、系統環境vim

系統平臺:CentOS 6.5-64安全

設置ip地址:192.168.0.10192.168.0.11192.168.0.12192.168.0.13192.168.0.14服務器

主機名:masterslave1slave2slave3slave4網絡

軟件程序:Hadoop-2.4.0.tar.gz(支持64位)、jdk-7u64-linux-x64.gzdom

防火牆關閉service iptables stopssh

SELINUX=disabled

3、環境準備

1.設置主機ip地址

#ifconfig eth1 192.168.0.10 255.255.255.0 up

#vim /etc/sysconfig/network-scripts/ifcfg-eth1

DEVICE=eth1

HWADDR=00:0C:29:48:2B:37

TYPE=Ethernet

ONBOOT=yes

BOOTPROTO=static

IPADDR=192.168.0.10

NETMASK=255.255.255.0

NETMASK=255.255.255.0

slave1slave2slave3slave4也以相同方式設置ip地址

2.設置主機名

#hostname master

#vim /etc/hosts

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4

::1 localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.0.10 master

192.168.0.11 slave1

192.168.0.12 slave2

192.168.0.13 slave3

192.168.0.14 slave4

slave1slave2slave3slave4hosts文件相同

#vim /etc/sysconfig/network

NETWORKING=yes

HOSTNAME=master

slave1slave2slave3slave4也以相同方式設置

注意啦!!測試各主機能ping通,經過ping主機名和ip地址測試!!

3.JDK安裝

root@localhost#tar xvf jdk-7u64-linux-x64.gz

root@localhost#mv jdk1.7.0_64/ /usr/local/java

root@localhost#vim /etc/profile

export JAVA_HOME=/usr/local/java

export PATH=$PATH:$JAVA_HOME/binroot@localhost#

root@localhost#source /etc/profile

root@localhost#java -version

 

 

 

 

4.添加Hadoop運行用戶

root@localhost~#useradd hadoop

root@localhost~#passwd hadoop

5.master配置SSH密鑰對

要求master免密碼登陸各slave,用於開啓相應服務

root@master ~#su hadoop

hadoop@master ~$ssh-keygen

hadoop@master ~$ssh-copy-id -i .ssh/id_rsa.pub hadoop@slave1

hadoop@master ~$ssh-copy-id -i .ssh/id_rsa.pub hadoop@slave2

hadoop@master ~$ssh-copy-id -i .ssh/id_rsa.pub hadoop@slave3

hadoop@master ~$ssh-copy-id -i .ssh/id_rsa.pub hadoop@slave4

4、安裝hadoop,在masterslave上配置環境變量

1.安裝hadoop

root@master ~#tar xvf hadoop-2.4.0.tar.gz

root@master ~#mv hadoop-2.4.0/ /usr/local/hadoop

root@master ~#ls /usr/local/hadoop

bin etc include lib libexec sbin share

上述目錄中,etc/hadoop/是配置文件目錄,sbin/下存放啓動,中止腳本。

root@master ~#chown -R hadoop.hadoop /usr/local/hadoop/

2.配置環境變量

root@master ~#vim /etc/profile

export JAVA_HOME=/usr/local/java

export HADOOP_HOME=/usr/local/hadoop

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

3.配置hadoop,有四個文件須要配置,hadoop-env.sh core-site.xml mapred-site.xml hdfs-site.xml,有兩個文件須要添加mastersslaves

a. hadoop@master ~$cd /usr/local/hadoop/etc/hadoop

   hadoop@master hadoop$vim hadoop-env.sh

export JAVA_HOME=/usr/local/java


b. hadoop@master hadoop$vim 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>

<description>Hadoop temporary cache catalog by cjenlet</description>

</property>

<property>

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

<value>/usr/local/hadoop/etc/hadoop/excludes</value>

</property>

</configuration>

c. hadoop@master hadoop$mv mapred-site.xml.template mapred-site.xml

   hadoop@master hadoop$vim mapred-site.xml

<configuration>

<property>

<name>mapred.job.tracker</name>      //連接jobtrack服務器的配置項,默認爲local,map屬爲1,reduce數爲1

<value>master:9001</value>

</property>

<property>

<name>mapred.local.dir</name>      //mapred做爲本地計算機使用的文件夾,能夠配置多塊硬盤,逗號隔開

<value>/usr/local/hadoop/var</value>

</property>

</configuration>

d. hadoop@master hadoop$vim hdfs-site.xml

<configuration>

<property>

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

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

</property>

<property>

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

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

</property>

<property>

<name>dfs.replication</name>

<value>4</value>      //文件副本數

</property>

<property>

<name>dfs.webhdfs.enabled</name>

<value>true</value>      //啓用web訪問的hdfs

</property>

</configuration>


 

e. hadoop@master hadoop$vim masters //由這個文件決定master主機的主機名

master


f. hadoop@master hadoop$vim slaves //由這個文件決定slave主機的住機名

slave1

slave2

slave3

slave4


g. slave主機安裝hadoop和配置環境變量,第三步由masterssh安全通道複製給各個slave


hadoop@master $scp /usr/local/hadoop/etc/hadoop/* /slave1:/usr/local/hadoop/etc/hadoop/

hadoop@master $scp /usr/local/hadoop/etc/hadoop/* /slave2:/usr/local/hadoop/etc/hadoop/

hadoop@master $scp /usr/local/hadoop/etc/hadoop/* /slave3:/usr/local/hadoop/etc/hadoop/

hadoop@master $scp /usr/local/hadoop/etc/hadoop/* /slave4:/usr/local/hadoop/etc/hadoop/

.啓動HDFS文件系統

1.格式化HDFS文件系統

hadoop@master $hdfs namenode -format

2.檢查新生成的目錄

hadoop@master $ll /usr/local/hadoop/name

drwxrwxr-x. 2 hadoop hadoop 24576 1219 03:53 current

3.啓動hadoop集羣

hadoop 的管理命令位於$HADOOP_HOME/sbin下,以start-*.shstop-*.sh開頭;

hadoop@master ~$start-dfs.sh //單獨啓動HDFS分佈式文件系統

hadoop@master ~$start-all.sh //啓動整個hadoop集羣,即啓動HDFSMap/Reduce

hadoop@master ~$stop-all.sh //關閉整個hadoop集羣

start-dfs.shstart-all.sh有什麼區別?

4.檢查開啓狀況

hadoop@master ~$jps //查看本節點各進程開啓狀況,本節點爲NameNode




hadoop@master ~hdfs dfsadmin -report|more //查看集羣信息


 



 

 

 

 

 

 

6、經常使用命令

1.文件下載、上傳、查看、建立、統計、合併

*hadoop@master ~$hadoop fs -ls /

//linux中的ls命令同樣

*hadoop@master ~$hadoop fs -mkdir /input

//hadoop fs -mkdir 在服務器上建立目錄

hadoop@master ~$hadoop fs -put /usr/local/hadoop/etc/hadoop/* /input

//hadoop fs -put 上傳本地文件到服務器

*hadoop@master ~$hadoop fs -copyFromLocal <本地源文件> <HDFS目標目錄>

//複製本地文件到HDFS

*hadoop@master ~$hadoop fs -copyToLocal <HDFS> <Local>

//複製HDFS上的文件到本地

*hadoop@master ~$hadoop -fs -du -s -h /passwd

//linux上的du同樣,hadoop -fs -du [HDFS]

*hadoop@master ~$hadoop fs -getmerge [-nl] <src> <localdst>

//HDFS上的文件和本地文件合併,合併到本地文件上


2.管理文件的權限和歸屬

*hadoop@master ~$hadoop fs -chgrp root <HDFS上的文件>

//hadoop fs -chgrp 修改屬組

*hadoop@master ~$hadoop fs -chown root.root <HDFS上的文件>

//linux上的chown同樣

*hadoop@master ~$hadoop fs -chmod -R 755 /passwd

//linux上的chmod同樣

*hadoop@master ~$


3.集羣管理和查看

*hadoop@master ~$hdfs dfsadmin -report

//查看集羣信息

*hadoop@master ~$hdfs dfsadmin -safemode [enter | leave | get | wait]

//enter:開啓安全模式

//leave:關閉安全模式

//get:獲取當前安全模式的開啓狀況

//wait:一直等到安全模式關閉

相關文章
相關標籤/搜索