HDFS:分布式文件系统(Hadoop Distributed File System)的缩写,是大数据分析中对文件的分布式存储的基础支持。这里主机价绍单机部署HDFS系统的安装与配置步骤,用以指导初学者了解。


1.系统环境及要求
硬件:以一台双核2G虚拟机
系统:CentOS 6.3 64bit
JDK: JDK 7(hadoop 2.7.3最低要求1.7,不支持1.6)



2.文件下载:
HDFS是HADOOP平台的一个子系统,需要把整个hadoop下载下来,只需配置启动HDFS子系统便可。
HADOOP的历史版本列表网址:http://hadoop.apache.org/releases.html
下载地址:http://apache.fayea.com/hadoop/common/hadoop-2.7.3/hadoop-2.7.3.tar.gz


3.安装:
创建hadoop用户组:
[root@saos ~]# groupadd add
创建hadoop用户:
[root@saos ~]# useradd -g hadoop -m -d /home/hadoop -s /bin/bash
给hadoop用户添加Root权限(超级用户):
给/etc/sudoers设置可修改:
[root@saos ~]# chmod +w /etc/sudoers
[root@saos ~]# vi /etc/sudoers
找到如下如示,增加hadoop那一行:
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
hadoop  ALL=(ALL)       ALL
切换到hadoop用户下:
[root@saos ~]#  passwd hadoop "回车后输和两次密码"
切换到hadoop目录下:
[root@saos ~]#  su - hadoop
把下载的文件上传到hadoop目录下。
将文件解压到"/usr/local"目录下,如hadoop用户没有写权限就修改一下。
然后将文件夹列名为hadoop。
回到hadoop的HOME目录,配置环境变量:
[root@saos ~]#  vi .bashrc
export JAVA_HOME=/usr/local/jdk1.7.0_80
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
export HADOOP_HOME=/usr/local/hadoop
export PATH=${PATH}:${HADOOP_HOME}/sbin:${HADOOP_HOME}/bin
配置如上内容。保存退出。重新登录使环境变量生效


3.配置:

HADOOP的配置文件目录:
/usr/local/hadoop/etc/hadoop
(1)修改core-site.xml,增加如下内容:
    <configuration>
        <property>
            <name>hadoop.tmp.dir</name>
            <value>/home/hadoop/hadoop/data</value>
        </property>
        <property>
            <name>fs.default.name</name>
            <value>hdfs://saos:9000</value>    “saos为主机名,9000为api服务的端口”
        </property>
    </configuration>
    
(2)修改hdfs-site.xml,增加如下内容:
    <configuration>
        <property>
            <name>dfs.namenode.name.dir</name>
            <value>/home/hadoop/hadoop/hdfs/name</value>   “文件的保存路径,需要手机创建好”
        </property>
        <property>
            <name>dfs.datanode.data.dir</name>
            <value>/home/hadoop/hadoop/hdfs/data</value>    “文件的保存路径,需要手机创建好”
        </property>
        <property>
            <name>dfs.replication</name>
            <value>1</value>
        </property>
        <property>
            <name>dfs.permissions</name>             “不配置这个时,JAVA远程调用时会报没有权限接口”
            <value>false</value>
        </property>
    </configuration>
(3)修改mapred-site.xml,修改成如下内容:
<configuration>
   <property>
       <name>mapreduce.framework.name</name>
       <value>yarn</value>
   </property>
</configuration>

4、配置好了hdfs的两个程序的配置,接下来就可以启动进程了,首先要执行HDFS的格式化操作:
[hadoop@saos hadoop]$ ./bin/hadoop namenode -format
执行完成之后,配置的namenode目录下会出现一些文件。


5、启动进程:
分别要启动namenode、datanode
./sbin/hadoop-daemon.sh start namenode
./sbin/hadoop-daemon.sh start datanode
查看启动的java进程可以看到,他们都分别启动了:
[hadoop@saos hadoop]$ jps
22735 NameNode
26819 Jps

22825 DataNode


6、使用
HDFS支持SHELL的command和JAVA API两种方式访问。java api需要代码才能示范,这里简单说明下SHELL的command的使用方式。
HDFS的命令模式为:
hadoop fs -“操作命令”
如:
[hadoop@saos hadoop]$ hadoop fs -ls /    “/表求hdfs的根目录下,是ls命令的一个参数”
Found 2 items
drwxr-xr-x   - hadoop supergroup          0 2016-12-26 23:21 /flume
drwxr-xr-x   - hadoop supergroup          0 2016-12-26 19:23 /hadoop
使用这个命令时,如果hdfs下没有创建过目录或文件时,则会报如下告警:
ls: `.': No such file or directory

这里不用管理,创建文件和目录后就不会再报了。


查文件使用请况:
[hadoop@saos hadoop]$ hadoop fs -df -h
Filesystem          Size    Used  Available  Use%
hdfs://saos:9000  17.1 G  14.7 M     13.6 G    0%


创建目录:
[hadoop@saos hadoop]$ hadoop fs -mkdir /test1


写入文件:
[hadoop@saos hadoop]$ hadoop fs -put LICENSE.txt /test1


下载文件:
[hadoop@saos hadoop]$ hadoop fs -get /test1/LICENSE.txt 


其它HDFS常命令:
hadoop fs -ls /
hadoop fs -lsr
hadoop fs -mkdir /flume
hadoop fs -put test.txt /flume
hadoop fs -get /flume/test.txt
hadoop fs -cp src dst
hadoop fs -mv src dst
hadoop fs -cat /flume/test.txt
hadoop fs -rm /flume/test.txt
hadoop fs -rmr /flume/test.txt
hadoop fs -text /flume/test.txt
hadoop fs -copyFromLocal localsrc dst 与hadoop fs -put功能类似。
hadoop fs -moveFromLocal localsrc dst 将本地文件上传到hdfs,同时删除本地文件。
lhadoop fsadmin
hadoop dfsadmin -report
hadoop dfsadmin -safemode enter | leave | get | wait
hadoop dfsadmin -setBalancerBandwidth 1000

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐