HDFS分布式文件系统
一、HDFS服务简介
HDFS是Hadoop File System的缩写,即Hadoop文件系统。是一种以Hadoop集群实现能够快速存储,数据备份,实现冗余,快速访问网络服务,。Hadoop是Apache软件基金会的开源分布式计算平台。
一个HDFS集群由一个运行于master上的NameNode和若干个运行于Slave节点的DataNode组成。NameNode负责管理文件系统命名空间和客户端对文件系统的访问操作;DataNode负责存储的数据。文件以块形式在DataNode中存储,假设一个块大小设置为50MB,块的副本数为3(通过设置块的副本数来达到冗余效果,防止单个DataNode磁盘故障后数据丢失),一个40MB的文件将存储在一个块中,然后将相同的3个块存储在3个DataNode中实现冗余。大文件将被切成小块存储。
二、系统环境
系统平台:CentOS 6.5-64位
设置ip地址:192.168.0.10、192.168.0.11、192.168.0.12、192.168.0.13、192.168.0.14
主机名:master、slave1、slave2、slave3、slave4
软件程序:Hadoop-2.4.0.tar.gz(支持64位)、jdk-7u64-linux-x64.gz
防火墙关闭service iptables stop
SELINUX=disabled
三、环境准备
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
slave1、slave2、slave3、slave4也以相同方式设置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
slave1、slave2、slave3、slave4的hosts文件相同
#vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=master
slave1、slave2、slave3、slave4也以相同方式设置
注意啦!!测试各主机能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
四、安装hadoop,在master和slave上配置环境变量
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,有两个文件需要添加masters和slaves
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> //namenode的ip端口
</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和配置环境变量,第三步由master通ssh安全通道复制给各个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 12月19 03:53 current
3.启动hadoop集群
hadoop 的管理命令位于$HADOOP_HOME/sbin下,以start-*.sh或stop-*.sh开头;
hadoop@master ~$start-dfs.sh //单独启动HDFS分布式文件系统
hadoop@master ~$start-all.sh //启动整个hadoop集群,即启动HDFS和Map/Reduce
hadoop@master ~$stop-all.sh //关闭整个hadoop集群
start-dfs.sh和start-all.sh有什么区别?
4.检查开启情况
hadoop@master ~$jps //查看本节点各进程开启情况,本节点为NameNode
hadoop@master ~hdfs dfsadmin -report|more //查看集群信息
六、常用命令
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:一直等到安全模式关闭
原文:http://www.cnblogs.com/cjenlet/p/5081806.html