Hadoop之HDFS

HDFS简介: HDFS是设计运行在廉价机器上的分布式文件系统。 HDFS设计目标:支持硬件故障。硬件故障是常态。一个HDFS实例可能是由成百上千个服务器组成。每一个服务器都存储了文件系统的部分数据,因为有大量的服务器节点,而且每个节点都有一定发生故障的概率,这也就意味着有些节点自始至终都没有起作用。所以节点故障的快速发现和快速修复就是HDFS的设计目标。流式数据访问。运行在HDFS上...
摘要由CSDN通过智能技术生成

HDFS简介:
HDFS是设计运行在廉价机器上的分布式文件系统。
HDFS设计目标:

  • 支持硬件故障。硬件故障是常态。一个HDFS实例可能是由成百上千个服务器组成。每一个服务器都存储了文件系统的部分数据,因为有大量的服务器节点,而且每个节点都有一定发生故障的概率,这也就意味着有些节点自始至终都没有起作用。所以节点故障的快速发现和快速修复就是HDFS的设计目标。
  • 流式数据访问。运行在HDFS上的应用需要流式访问他们的数据集。这些应用大多是批处理应用而不是交互式应用。数据的高吞吐量就成了重点。
  • 大数据集。跑在HDFS上的应用都有大量的数据集。HDFS上的一个典型文件一般有GB 甚至TB级别。
  • 简单一致性模型。HDFS上应用的文件需要一次写入多次读取。一个文件一旦被创建和写入,关闭就不应该被改变。
  • “移动计算比移动数据更便宜”。这句话怎么理解呢?它的意思是,如果一个应用的计算是在它操作的数据附近执行那么就更有效。即访问的数据如果都是连续的,那么这个计算所占用的资源就更少,因为这样就减少了去其他数据块寻址的时间。而且HDFS上的数据块太大了。这可以最大限度地减少网络拥塞并提高系统的整体吞吐量。HDFS模型的假设是最好把计算移动到数据所在的位置而不是将数据移动到计算所在的位置。HDFS提供了将计算移动到离数据位置更近的接口。
  • 跨异构硬件和软件平台的可移植性。HDFS的设计便于从一个平台移植到另一个平台。这有助于广泛采用HDFS作为大量应用程序的首选平台。

ok,以上是官网所描述的HDFS的设计目标。下面看一下HDFS的架构模型。
HDFS是一个主/从式架构,一个HDFS集群有一个NameNode节点,NameNode节点管理着文件系统的空间和合理的访问。另外还有多个DataNodes节点。DataNodes节点负责存储数据。数据存入HDFS时会被分割成一个或多个block数据块存储到dataNodes节点上。NameNode执行文件系统命名空间操作,如打开,关闭和重命名文件和目录。它还确定了块到DataNode的映射。DataNode负责提供来自文件系统客户端的读写请求。DataNode还根据NameNode的指令执行块创建,删除和复制。
HDFS架构图如下所示:

HDFS架构图

当client从HDFS上读取数据时,会从nameNode节点上查找数据所在的block位置。DataNode会定期向NameNode定时发送心跳信息,汇报本身的健康状况及block信息。
下面来搭建HDFS环境。
搭建HDFS环境之前请确保已安装上JDK。
然后安装SSH,安装SSH的目的是确保Hadoop脚本能够远程管理Hadoop实例。
SSH安装步骤:
1、sudo yum install ssh
这里写图片描述
出现“nothing to do”说明已安装SSH,接下来安装证书。
2、ssh-keygen -t rsa
一路回车即可。
3、复制~/.ssh/id_rsa.pub 到~/.ssh/autothorized_keys.使用以下命令。
cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
这里写图片描述

打开authorized_keys看以下。注意框里面的是你的服务器的hostname,一定要和hostname一致,不然后面会出现很多问题。
然后你可以测试以下ssh是否成功。比如我是ssh yoyocheknow,看是否可以连接上。
这里写图片描述
可以看到我的ssh连接成功了。(我用的是腾讯云的服务器,设置了密码,所以还要输入密码)。
然后下载hadoop 包进行安装,我用的是hadoop-2.6.0-cdh5.7.0.tar.gz这个版本的。可以直接去官网下载。下载地址:http://archive.cloudera.com/cdh5/cdh/5/hadoop-2.6.0-cdh5.7.0.tar.gz
然后tar -xzvf hadoop-2.6.0-cdh5.7.0.tar.gz 将其解压到/opt目录下。如下图所示:
这里写图片描述

下面要对Hadoop配置文件修改:
1、对/opt/hadoop-2.6.0-cdh5.7.0/etc/hadoop/hadoop-env.sh 文件进行修改。加入JAVA_HOME地址:
这里写图片描述

2、然后对/opt/hadoop-2.6.0-cdh5.7.0/etc/hadoop/core-site.xml 修改:

        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://yoyocheknow:8020</value>
        </property>

        <property>
            <name>hadoop.tmp.dir</name>
            <value>/opt/hadoop/app/tmp</value>
        </property>

加入以上配置。注意我的本机hostname 是yoyocheknow.你要根据你的hostname 来配置。下面那个配置是配的hadoop的临时文件。
3、/opt/hadoop-2.6.0-cdh5.7.0/etc/hadoop/hdfs-site.xml 修改:

        <property>
            <name>dfs.replication</name>
            <value>1</value>
        </property>

加入以上配置。申明是单节点的hdfs。
4、/opt/hadoop-2.6.0-cdh5.7.0/etc/hadoop/slaves 修改。
直接添加本机hostname 即可:
这里写图片描述
注意不要写错。
现在配置已经弄完。可以启动了,启动前要格式化namenode节点

 $ bin/hdfs namenode -format

在Hadoop 目录下执行以上命令。结果如下:
这里写图片描述
这里写图片描述

记住nameNode只要初始化一次就行了。
下面开始启动hdfs。首先看一下sbin目录:
这里写图片描述

这里有所有的启动关闭的命令。
启动dfs:$ sbin/start-dfs.sh

结果如下:
这里写图片描述

启动完成后,我们输入jps命令查看,可以发现,namenode,datanode,SecondaryNameNode都起来了。
还有另外一种方式验证,就是在浏览器输入:hostname:50070.如下图:

这里写图片描述

从上图可以看到HDFS运行成功。(注意我这里用的是腾讯云的服务器,hostname能直接访问,是因为我在我的windows本地的hosts加了ip:hostname的映射。你也可以直接输入ip:50070访问。)
HDFS介绍及环境搭建先到这里。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值