Hadoop--Hdfs

Big Data 大数据
1. 数据采集(多个数据源)
2. 数据存储(分布式存储)
3. 数据分析(并行计算)

Hadoop

**apache软件基金会的开源项目 提供了大数据集的存储和大数据集的并行计算模型**

Apache Hadoop(http://hadoop.apache.org/)是⼀一款框架,允许使⽤用简单的编程模  	型跨计算机集群分布式处理理⼤大型数据集。Hadoop开源免费,具备稳定可靠、可扩展、分布式计算等特性	

并行计算:数据传输、计算容错、分布式集群资源管理等

google:开源3个技术的技术论文
GFS google file system
MapReduce 并行计算框架
BigTable 大表
开源实现:
HDFS hadoop分布式文件系统
MapReduce
HBase

生态体系
hadoop
hbase
kafka
hive
flume

hadoop体系架构

  • HDFS hadoop分布式文件系统 具备可靠 高吞吐能力

  • Yarn 分布式任务调度和资源管理平台 类似于分布式操作系统 对分布式集群中的计算资源进行管理

  • MapReduce 并行计算框架(模型) 用来开发并行计算任务做并行运算

HDFS提供数据 ----> MapReduce设计并行计算任务 ----> 提交到yarn集群运行 ----> HDFS\存储系统

HDFS 类似于FastDFS:解决大数据集的存储问题

HDFS

HDFS是Hadoop的分布式⽂文件系统( Hadoop Distributed File System ),类似于其它的分布式⽂文件。HDFS⽀支持⾼高度容错,可以部署在廉价的硬件设备上,特别适宜于⼤大型的数据集的分布式存储。

架构篇

HDFS采⽤用master/slave架构。⼀一个HDFS集群是由⼀一个Namenode和⼀一定数⽬目的Datanodes组成。

Namenode是一个中心服务器,负责管理理文件系统的名字空间(namespace)以及客户端对⽂文件的访问。集群中的Datanode一般是一个节点一个,负责管理它所在节点上的存储。HDFS暴露了文件系统的名字空间,⽤用户能够以⽂文件的形式在上⾯面存储数据。从内部看,一个⽂文件其实被分成一个或多个数据块,这些块存储在一组Datanode上。Namenode执行文件系统的名字空间操作,比如打开、关闭、重命名文件或目录。它也负责确定数据块到具体Datanode节点的映射。
Namenode : 存储系统元数据、namespace、管理理datanode、接受datanode状态汇报 Datanode: 存储块数据,响应客户端的块的读写,接收namenode的块管理理指令 Datanode负责处理理⽂文件系统客户端的读写请求。在Namenode的统一调度下进行数据块的创建、删除和复制。

Block: HDFS存储数据的基本单位,默认值是128MB,实际块⼤大⼩小0~128MB

Rack: 机架,对datanode所在主机的物理理标识,标识主机的位置,优化存储和计算

在这里插入图片描述


在这里插入图片描述
1552485860296
在这里插入图片描述

HDFS常见问题

  • HDFS是否适合存储小文件?
    不适合

        1个文件1GB      10000个小文件1GB
    

    磁盘空间 8个数据块1GB 10000个数据块1GB
    元数据 1条 10000条

    a. 使用HDFS存储小文件 会大量浪费NameNode的内存空间
    b. 存放小文件会造成寻址的时间大于IO读写的时间 违背了HDFS设计原则

  • NameNode和SecondaryNameNode的联系?

结论:并不是主备的关系

SecondaryName实际上是辅助NameNode工作的,可以周期性合并fsimage和edits log文件,可以加速NameNode数据的恢复效率

Namenode主要维护两个⽂文件,⼀一个是 fsimage ,⼀一个是 editlog

  1. fsimage保存了了最新的元数据检查点,包含了了整个HDFS⽂文件系统的所有⽬目录和⽂文件的信息。
    对于⽂文件来说包括了了数据块描述信息、修改时间、访问时间等;对于⽬目录来说包括修改时间、
    访问权限控制信息(⽬目录所属⽤用户,所在组)等。
  2. editlog主要是在NameNode已经启动情况下对HDFS进⾏行行的各种更更新操作进⾏行行记录,HDFS客户端执⾏行行所有的写操作都会被记录到editlog中。
    为了了避免editlog不不断增⼤大,secondary namenode会周期性合并fsimage和edits成新的fsimage

![1552485979481](F:\文件资料\讲课笔记\BigData训练营\07Hadoop\day1 hdfs\assets\1552485979481.png)
在这里插入图片描述

环境搭建:

伪分布式(Pseudo-Distributed)
  • 安装JDK(注意:关闭防火墙)配置JDK环境变量
  [root@node1 ~]# rpm -ivh jdk-8u191-linux-x64.rpm
  [root@node1 ~]# vi .bashrc
  JAVA_HOME=/usr/java/latest
  CLASSPATH=.
  PATH=$PATH:$JAVA_HOME/bin
  export JAVA_HOME
  export CLASSPATH
  export PATH
  [root@node1 ~]# source .bashrc
  • 关闭防火墙
    systemctl stop firewalld   (centos6 : service iptables stop)
    systemctl disable firewalld (centos6 : chkconfig iptables off)
    
  • 配置主机名和IP映射关系
    [root@node1 ~]# vi /etc/hosts
    127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
    192.168.186.128 主机名(hadoop)
    # 重启jvm
    [root@node1 ~]# reboot
    
  • 配置主机SSH免密码登录
    # 生成公钥秘钥
    [root@hadoop ~]# ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
    # 将公钥给服务者
    [root@hadoop ~]# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
    # 修改权限
    [root@hadoop ~]# chmod 0600 ~/.ssh/authorized_keys
    
  • 安装Hadoop并且配置HADOOP_HOME环境变量量
    [root@hadoop ~]# tar -zxf hadoop-2.6.0_x64.tar.gz -C /usr/
    [root@hadoop ~]# yum install -y tree
    [root@hadoop ~]# tree -L 1 /usr/hadoop-2.6.0/
    /usr/hadoop-2.6.0/
       bin -- 基础指令 hadoop、hdfs指令
       etc -- 配置⽬目录(重要)
       include
       lib
       libexec
       LICENSE.txt
       NOTICE.txt
       README.txt
       sbin -- 系统命令 start|stop-dfs|yarn.sh|hadoop-daemon.sh
       share -- hadoop依赖jar⽂文件
    7 directories, 3 files
    
    
    

修改环境变量

[root@hadoop ~]# vi .bashrc
HADOOP_HOME=/usr/hadoop-2.6.0
JAVA_HOME=/usr/java/latest
CLASSPATH=.
PATH= P A T H : PATH:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值