大数据介绍 Hadoop 伪分布式 完全分布式 HDFS MapReduce yarn zookeeper

大数据

数据:字母 数字 声音 影像等都是数据
数据没有任何含义,仅代表一个符号。数据是信息的载体。
信息:数据经过解释加工之后,赋予一定的含义。
信息量:消除人们对不确定因素的大小

大:
1 数据量大
基于非常非常大量的数据,甚至是海量数据才能给我们带来一定的价值。
价值是从这些数据中挖掘出来的。
2.大数据的技术
在海量数据的基础上,必须产生能处理这么大数据量的技术。

大数据:
大数据(big data),是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。
数据就是价值

特点:
1.大量
2.多样性
3.高速
4.价值

Hadoop

可靠的,可扩展的,可以分布式计算的开源软件。
特点:
1.使用简单编程模型在集群中分布式处理海量数据
分布式:从软件的角度思考,使用多个服务器共同计算完成任务
集群:从硬件的角度思考,一个集群中可以有多台服务器
2.节点的数量可以是单个到成千上万,并且每个节点都有自己的计算和存储
3.相对比在硬件层次做优化,hadoop提供了应用层的高性能操作
4.集群中的任何一个节点都允许出错

hadoop到底是什么?
1.从具体内容来说
Hadoop是一个软件、分布式的计算框架
2.从大数据整体上来说
特指hadoop生态圈

hadoop(大数据)能解决什么问题?
1.海量数据怎么存?
2.海量数据怎么算?

hadoop的四大组件

  • HDFS:Hadoop Distributed File System
    三个角色:
    NameNode:
    主节点,存元数据(描述数据的数据),全局只有一个。
    DataNode:
    数据节点,存真实数据,全局可以有多个。
    NameNode节点可同时充当DataNode角色。
    SecondoryNameNode:
    主节点备份节点,备份元数据,全局只有一个。

  • MapReduce:解决海量数据的计算问题

  • Yarn:资源调度器

  • Common:与Hadoop生态圈的其他组件进行交互的jar包

HDFS,MapReduce名字由来
根据谷歌发表了三篇论文
GFS -> HDFS
Map-Reduce -> MapReduce
BigTable -> HBase

版本:
普通版:
安装使用比较简单,提供了基础的功能,一般适用于初学者。
商业版:
添加额外的功能,比较专业。

hadoop安装
1.本地环境:用于开发和简单测试使用
2.伪分布式环境:用一台机器充当了所有的角色
3.完全分布式环境:真正意义上的分布式,每个节点都有不同的角色

伪分布式

前提:jdk ssh

  • 下载Hadoop安装包
    hadoop.apache.org -> Apache release archive -> hadoop2.7.6
  • 解压缩
    tar -xzvf hadoop2.7.6.tar.gz -C …/modules
  • 配置环境变量
HADOOP_HOME=xxxx/hadoop
PATH=${PATH}:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin
[bduser@node200~]$ source .bashrc
  • 修改配置文件
    关闭防火墙
  • 格式化
    hadoop namenode -format
  • 启动相应服务
start-all.sh (start-dfs.sh;start-yarn.sh)
start-dfs.sh 单独启动hdfs的相应服务
start-yarn.sh  单独启动yarn的相应服务
start-all.sh 同时启动hdfs和yarn的相应服务
  • 验证
    a.jps 查看java进程
    b.webUI 主机名/ip:50070
  • 注意:
    a.配置分布式的前提条件
    1)jdk1.8
    2)ssh免密登录
    3)防火墙关闭
    b.如果访问不到webUI的几种情况处理
    1)windows的防火墙没有关闭
    2)linux的防火墙没有关闭
    3)hosts文件没有做映射关系
    4)浏览器(不要使用IE浏览器或兼容模式)
    c.如果需要重新格式化
    1)关闭服务
    2)删除dfs目录
    3)格式化
    4)开启服务

完全分布式

  • 创建节点
    1)传统使用镜像的方式创建
    2)以完整的原型机为基础,做完整克隆
  • 修改网络配置
    a.sudo vim /etc/udev/rules.d/70-persistent-net.rules
    把eth0网卡行注释掉,然后把eth1改成eth0
    复制当前网卡eth0里的mac地址
    b.sudo vim /etc/sysconfig/network-scripts/ifcfg-eth0
    把mac地址粘贴上,修改ip地址
    c.重启网卡
    sudo service network restart
  • 修改主机名
    sudo vi /etc/sysconifg/network 修改HOSTNAME
    reboot重启机器生效
  • 修改映射关系 /etc/hosts
    ssh由于是原节点的完整克隆,无需重新配置ssh
    *创建两个脚本放在/usr/local/bin/目录下,并赋予可执行权限
    如果想要同步根目录下的内容,必须切换到root用户使用,sudo不好使
    xsync:rsync 本地路径/文件名 whoami@主机名:路径 向集群所有节点同步数据
    rsync 本地路径 远程用户名@远程主机名:远程路径
    xcall:ssh 主机名 命令 让集群中所有节点执行同一命令
  • 修改hadoop的配置文件,使用xsync进行同步
  • 在主节点进行格式化
    hadoop namenode -format
  • 在主节点启动服务
    start-all.sh 每个节点按照配置文件会启动响应的进程
  • 注意:
    1.关闭防火墙
    2.时间同步
    rsync与scp的区别:
    相同点:语法完全相同
    不同点:
    scp是不管远程文件是否与本地文件一致,全部复制。
    rsync只同步本地文件与远程文件不一致的部分。

HDFS

Hadoop Distributed File System
分布式的文件系统

什么是文件系统?
能存东西,硬盘,做存储的,是一个单纯的硬件设备
在硬件设备基础上添加一层软件对数据进行存储和管理
表现形式?
Windows:file:///c://xxx
Linux:file:///xxx
ftp: ftp://xxx
hdfs://node200:9000/xxx

三个角色:
NameNode:hdfs集群的主节点,存储元数据,全局只有一个
DataNode:hdfs集群的从节点,存储真实数据,全局有多个
SecondaryNameNode:hdfs集群主节点的备份节点,全局只有一个

分布式存储:
如果一个文件很大,存在一个节点中有压力,可以把文件划分成多个小部分
每个部分进行分别存储,可以把整个文件的存储压力分摊给每个节点
优势:
1.存储量大
2.可以容错,默认有三个副本
3.适合一次写入,多次读出的情景
劣势:
1.不适合做实时运算
2.速度慢
3.适合添加,不适合修改

关于hdfs的两个脚本
hdfs / hadoop
1.没有参数,或者写–help/-help/-h 跳出提示信息
2.每个命令都对应一个java类,本质命令就是java代码
3.hdfs dfs 完全等价于 hadoop fs

hdfs的存储方式:
按照128M的大小为block块的大小进行文件的划分
每128M划分一个block块,最后不足128M的部分按一块算,但是大小是实际的大小
每个块以一个独立个体的形式进行存储,但是整体会通过块池id统一
为什么是128M?
最优化寻址时间。
应用题
已知条件:
1.硬盘的读写速度为100M/s
2.寻址时间是读写时间的1%
3.性价比最高的寻址时间为10ms
问题:
10ms的时间能读写多少数据
答:
10ms / 0.01 = 1000ms = 1s
1s * 100M/s = 100M
100M是整数嘛
在计算机二进制中,与100最接近的数字是128。
查看DataNode里存放的数据
很多个层次,依次进入就ok,其中两个subdir0与hdfs中文件的位置没有关系
DataNode中存储的是真实的数据,文件或目录中间的关联DataNode不关心。

hdfs的操作:
1.shell操作
看文档
2.API操作

  • 引包:
    a.传统方式
    i.hadoop.tar.gz解压缩 -> share -> 在搜索框搜索.jar -> 复制到_lib -> 搜索框中搜索-source -> 剪切到_source ->继续搜索-test -> 剪切到_test ->_lib中还剩144个jar包
    ii.file -> projectStructure -> libraries -> + java -> 选择_lib的所有jar包 -> 确定
    b.maven
    在pom文件中修改依赖
  • 代码:
    Configuration conf
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值