HDFS是一个分布式文件系统,安装完成之后使用起来类似于本地文件系统,但是它是一个网络文件系统,所以访问这种文件系统的方式和访问本地文件系统的方式还是有所差别的(本地文件系统的方式是基于系统调用的,当然也有类似NFS这样的网络文件系统可以使用和本地文件系统相同的访问方式,那是因为已经在内核中安装了NFS,而HDFS只是一个应用层的服务程序罢了)。但是这些命令看上去还是和常用的shell命令很类似的。
首先,我们需要下载一个Hadoop程序包,hadoop分为两个压缩文件,一个是源代码,一个是编译好的程序包,下载的地址:,这里使用的是最新的2.6.0版本,下载好hadoop-2.6.0.tar.gz文件之后进行解压会有这些文件:
linuxidc@linuxidc-VirtualBox:~/workplace/hadoop/hadoop-2.6.0$ ls
bin etc include lib libexec LICENSE.txt logs NOTICE.txt README.txt sbin share
这些文件和我们在linux下安装的其他软件的目录结构差不多,所有的配置文件都在/etc下面,可执行文件放在bin目录下,sbin放的是一些脚本文件。
要想单独启动一个hdfs用来尝试一下文件存储的功能,需要对下面的文件进行配置:
1、配置etc/hadoop/hadoop-env.sh文件,看了一下这里执行了一些export目录设置系统的环境变量。
需要配置里面的JAVA_HOME变量,设置为java安装路径
默认情况下export JAVA_HOME=${JAVA_HOME},查看系统的JAVA_HOME路径并配置。
linuxidc@linuxidc-VirtualBox:~/workplace/hadoop/hadoop-2.6.0/etc/hadoop$ echo ${JAVA_HOME}
/home/linuxidc/java/jdk1.7.0_60
当然,也可以在这里面添加HADOOP_HOME=hadoop的安装目录,方面访问hadoop的根目录。
2、配置etc/hadoop/core-site.xml文件,从命名上可以看出这里是一些核心的配置项,hadoop的配置都是使用key:value的方式,但是配置文件都是使用xml的方式,所以基本的结构都是这样子的:
<configuration>
<property>
<name>key</name>
<value>value</value>
</property>
</configuration>
这里需要配置的key是hadoop.tmp.dir,这个配置的是HDFS系统以来的基础目录,如果不配置它会设置为/tmp目录下,而/tmp目录下的文件不是永久性的,所以可能出现问题。另外如果在hdfs的namenode和datanode目录不配置的情况下,默认也会存放在该目录中。
配置项fs.default.name设置的是HDFS的namenode的访问地址,因为namenode存放的是系统的所有元数据信息,也就是文件系统访问的入口,所以这个是必须要配置的,这里配置的是hdfs://hzfengyu.netease.com:9000。要保证前面的域名是本机可以识别的。整个的配置文件如下:
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hzfengyu/workplace/hadoop/data</value>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://hzfengyu.netease.com:9000</value>
</property>
</configuration>
--------------------------------------分割线 --------------------------------------
Hadoop: The Definitive Guide【PDF版】
--------------------------------------分割线 --------------------------------------
3、配置etc/hadoop/hdfs-site.xml文件,这个文件是hdfs的配置文件,需要配置如下几项:
dfs.replication:从命名上可以看出这里配置的是每一个block的复制的份数,这里我们为了测试,简单配置为1.
dfs.namenode.name.dir:namenode依赖的根目录文件
dfs.datannode.data.dir:datanode依赖的根目录文件
完整的配置如下: