大数据(hadoop)

人盡茶涼 提交于 2019-12-24 23:48:45

大数据基础平台

大数据:通俗就是收集、分析、处理大量的数据,然后从中获得结果的技术总称

大数据应用领域

广告、金融、能源生物、安全、电商等等

大数据的技术

批处理框架

  • 历史性数据,有源有结束点
  • 离线型数据
  • 能处理全部的历史性数据
  • Apache MapReduce

流处理框架

  • 处理实时性数据
  • 源源不断的处理数据
  • Apache samza
  • Apache storm

混合处理框架

  • 既有批处理也有流处理
  • Apache flink
  • Apache spark

项目定义

  • 可靠的,可扩展的开源软件
  • 是一个大数据处理框架,允许使用简单的编程模型跨计算机集群分布式处理大型数据集。
  • 可以从单个服务器扩展到数千台计算机
  • 集群中的媚态计算机都提供本地计算和存储
  • 集群不是依靠硬件来提供高可用性,而是设计了用于检测和处理应用程序层的故障,从而在计算机集群上提供高可用性服务。

hadoop的核心项目

  • hadoop分布式文件系统(HDFS):一种分布式文件系统,可提供对应用程序数据的高吞吐量访问。
  • hadoop YARN:作业调度和集群资源管理的框架。
  • hadoop MapReduce: 基于YARN的系统,用于并行处理大型数据集。

相关项目

Apache的其他Hadoop相关项目:

  • Hadoop Common:支持其他Hadoop模块的常用实用程序
  • Ambari:
    • 基于web的工具,用于配置,管理和监控Apache Hadoop集群。
    • 提供了一个查看集群运行状态的仪表板。
  • HBase:可扩展的分不是数据库,支持大型表的结构化数据存储
  • Hive:一种数据仓库基础架构,提供数据汇总和即时查询
  • Spark:用于Hadoop数据的快速通用计算引擎。
  • ZooKeeper:用于分布式应用程序的高性能协调服务。

hdfs定义与特点

  • HDFS(Hadoop分布式文件系统)
  • 高度容错性的系统
  • 适合部署在廉价的机器上
  • 提供高吞吐量的数据访问
  • 适合超大数据集的应用程序

特点:

  • 支持大数据文件
  • 支持文件分块存储
  • 支持一次写入,多次读取,顺序读取(流式数据访问)
  • 支持廉价硬件
  • 支持硬件故障数据保护

HDFS集群架构

主:NameNode

用于保存整个文件系统的目录信息、文件信息及分块信息。

作用:

  • 接受用户的操作请求
  • 维护文件系统的目录结构
  • 管理文件和Block之间的映射管理
  • 管理block和DataNode之间的映射

从:DataNode

分布在廉价的计算机上,用于存储Block块文件

作用:

  • 文件被分成存储到DataNode的磁盘上
  • 每个Block可以设置多副本

MapReduce介绍

mepreduce是Hadoop的核心项目,它是一个编程模型

核心步骤分为两部分:Map和Reduce

工作原理

向MapReduce框架提交一个任务的

  • 把这个任务分成多个Map任务
  • 分配到不同的节点上执行
  • 每个Map任务处理一部分数据
  • 完成后,产生中间文件,然后交给Reduce整合并输出

yarn介绍

YARN:另一种资源协调者

功能:任务调度和集群资源管理

**好处:**维护成本低、数据共享。

YARN组件(主从)

主:ResourceManager (资源管理):管理和调度NodeManager上的资源

从:NodeManager (节点管理):用于接收资源管理中的应用管理的计算任务、启动/停止任务和资源管理中的Scheduler汇报并协商资源、监控并汇报本节点的情况

工作原理

  • 首先数据上传到集群中
  • 然后将写好的程序打成jar包通过命令提交MR作业
  • 提交到集群后由集群管理者MR开始调度分配资源
  • 到HDFS读取数据执行MapReduce相关进程对数据进行计算

hadoop单机部署

介绍

  • 是Hadoop的默认部署模式
  • 当配置文件为空,Hadoop完全运行在本地
  • 不需要与其他节点交互,不使用HDFS,不加载任何Hadoop守护进程
  • 主要用于开发调式MapReduce程序的应用逻辑

部署流程

  • 下载软件包

官网:https://archive.apache.org/dist/hadoop/common/ (进去找相应版本,这里安装2.8.5)

  • 安装JDK(将下载后的jdk程序包拷贝到服务器上)

解压到指定目录

[root@vm2 ~]# tar xf /root/jdk-8u191-linux-x64.tar.gz -C /usr/local
  • 安装hadoop
[root@vm2 ~]# tar xf /root/hadoop-2.8.5.tar.gz -C /usr/local
[root@vm2 ~]# mv /usr/local/hadoop-2.8.5 /usr/local/hadoop
  • 配置环境变量
[root@vm2 ~]# vim /etc/profile.d/hadoop.sh
export JAVA_HOME=/usr/local/jdk1.8.0_191
export HADOOP_HOME=/usr/local/hadoop
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

[root@vm2 ~]# source /etc/profile

测试hadoop可用性

准备一个目录, 目录里准备一个 (任意写多个字符,某些字符要有重复)

[root@vm2 ~]# mkdir /home/input
[root@vm2 ~]# vim /home/input/test1.txt

使用hadoop里自带的jar包里的wordcount函数进行统计

[root@vm2~]# hadoop jar  /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.5.jar wordcount /home/input/test1.txt  /home/output/00
wordcount后接文件或目录都可以,接文件就统计文件,接目录则统计整个目录里的文件

[root@hadoopmaster ~]# ls /home/output/00
part-r-00000  _SUCCESS      //_SUCCESS文件说明JOB运行成功,part-r-00000是输出结果文件
[root@vm2 ~]# cat /home/output/00/part-r-00000
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!