大数据技术

一. 大数据技术生态体系

在这里插入图片描述

二、hadoop入门

1. hadoop目录结构
  • bin: Hadoop的命令
  • sbin: Hadoop的脚本
  • etc: Hadoop的配置文件
  • share: Hadoop的jar包
2. hadoop集群启动
2.1 单点启停
  • 2.1.1 如果集群是新集群,第一次启动需要格式化namenode

    在namenode的节点执行:hdfs namenode -format

  • 2.1.2 启动namenode(停止将start改为stop)

    在namenode的节点执行:hdfs --daemon start namenode

  • 2.1.3 启动datanode(停止将start改为stop)

    在所有的节点执行:hdfs --daemon start datanode

  • 2.1.4 启动2nn(停止将start改为stop)

    在2nn的节点执行:hdfs --daemon start secondarynamenode

  • 2.1.5 启动resourcemanager(停止将start改为stop)

    在rm的节点执行:yarn --daemon start resourcemanager

  • 2.1.6 启动nodemanager(停止将start改为stop)

    在所有的节点执行:yarn --daemon start nodemanager

  • 2.1.7 验证:

    通过js命令查看所有的继承是否存在或者通过web端访问:
    dfs:http://hadoop102:9870
    yarn:http://hadoop103:8088
    history:http://hadoop102:19888

  • 2.1.8 重复格式化namenode需要注意的问题:

    重复格式化namenode,会导致namenode中的VERSION的clusterID发生变化,而datanode的VERSION的clusterID依然是旧的,导致datanode找不到namenoded,当启动datanode不久会自动下线。所以重复格式化namenode前,要删除每个节点的data目录,再进行格式化.

2.2 群启群停

\qquad 前提:配置ssh免密登录,配置workers文件(hadoop2.x中是slaves文件)
\qquad 在NN的节点:start-dfs.sh / stop-dfs.sh
\qquad 在rm的节点:start-yarn.sh / stop-yarn.sh

3. hadoop命令
3.1 hdfs命令
  • 3.1.1 在HDFS中创建目录

    hadoop fs -mkdir /input

  • 3.1.2 上传文件到HDFS

    hadoop fs -put 上传的文件路径 /input

  • 3.1.2 查看Datanode存储的数据

    cd /opt/module/hadoop-3.1.3/data/data/current/BP-1785378398-192.168.64.102-1679851386019/current/finalized/subdir0/subdir0 && ll

3.2 yarn命令
  • 3.1.1 在yarn 上执行wordcount程序
    1. 在HDFS创建一个目录
    • hadoop fs -mkdir /wcinput

    1. 上传数据到/wcinput
    • hadoop fs -put 上传的数据 /wcinput

    1. 执行wordcount
    • hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /wcinput /wcoutput

4. hadoop端口

\qquad NameNode内部通信端口:8020
\qquad NameNode web端口:9870
\qquad 2NN web端端口:9868
\qquad ResourceManager web端口:8088
\qquad 历史服务器web端端口:19888

5. hadoop HDFS命令

https://upward.blog.csdn.net/article/details/129708606?spm=1001.2014.3001.5502

6. MapReduce优化手段
  1. MapReduce程序运行瓶颈
    • 计算机性能
    • CPU、内存、磁盘健康、网络
    • I/O操作优化
    • 数据倾斜
    • MapReduce设置不合理
    • Map运行行时间太长,导致Reduce等待过久
    • 小文件过多
    • 大量的不可分块的超大文件
    • Spill次数过多
    • Merge次数过多等
  2. 优化方法

    MapReduce优化方法主要从六个方面考虑:数据输入、Map阶段、Reduce阶段、 IO传输、数据倾斜问题和常用的调优参数。

    • map阶段
      (1)减少溢写(Spill )次数:通过调整mapreduce.task.io.sort.mb及mapreduce.task.sort.spill.percent 数值,增大触发Spill内存上限,减少Spill次数,从而减少磁盘IO。
      (2)减少合并(Merge)次数:通过调整mapreduce.task.io.sort.factor参数,增大Merge的文件数目,减少Merge次数,从而缩短MR处理时间。
      (3)在Map之后,不影响业务逻辑前提下,先进行Combine处理,减少I/O.
    • reduce阶段
      (1)合理设置MapReduce:两个都不能设置太少,也不能设置太多,太少会导致Task 等待,延长处理时间太多,会导致Map和Reduce任务间竞争资源,造成处理超时等错误。
      (2)设置Map、Reduce共存:调整mapreduce.job.reduce.slowstart.completedmaps参数,使Map运行到一定程度后Reduce开始运行,减少Reduce等待时间。
      (3)规避使用Reduce:因为reduce用于连接数据集的时候将会产生大量的网络消耗。
      (4)合理设置Reduce的Buffer:默认情况下,数据达到一个阈值的时候,Buffer的数据就会写入磁盘,然后Reduce从磁盘中获得所有的数据。也就是说,Buffer和Reduce没有直接关联的,中间多次写磁盘>读磁盘的过程,既然有这个弊端,那么就可以通过参数来配置,使得Bufer中的一部分数据可以直接输送到Reduce,从而减少I/O开销: mapreduce.reduce.input.buffer.percent,默认为0.0。当值大于0的时候,会保留指定比例的内存读Buffer中的数据直接拿给Reduce用。这样一来,设置Buffer需要内存,读取数据需要内存,Reducei算也要内存,所以要根据作业的运行情兄进行调整。
    • I/O传输
      (1)采用数据压缩的方式,减少网络108的时间。安装Snappy和LZO压缩编码器。
      (2)使用SequenceFile二进制文件。
    • 减少数据倾斜
      (1)抽样和范围分区
      可以通过对原数据进行抽样得到的结果集来预设分区边界值。
      (2)自定义分区
      基于输出键的背景知识进行自定义分区。例如,如果Map输出键的单词来源于一本书。且其中某几个专业词汇较多。那么就可以自定义分区将这这些专业词汇发送给固定的一部分Reduce实例。而将其他的都发送给剩余的Reduce实例。
      (3)Combine
      使用Combine以大量地减少数据倾斜。在可能的情况下,Combine的目的就是聚合并精简数据。
      (4)采用Map Join,尽量避免Reduce Join。
    • 小文件优化
      (1)小文件优化的方向
      1. 在数据采集的时候,就将小文件或小批数据合成大文件再上传HDFS。
      2. 在业务处理之前,在HDFS上使用 Mapreduce 程序对小文件进行合并。
      3. 在 MapReduce 处理时,可采用 CombineTextInputFormat 提高效率。
      4. 开启uber模式,实现jvm重用。
      (2)Hadoop Archive
      是一个高效的将小文件放入HDFS块中的文件存档工具,能够将多个小文件打包成一个HAR文件,从而达到减少NameNode 的内存使用
      (3)SequenceFile
      SequenceFile 由一系列的二进制kv构成,如果key为文件名,value为文件内容,可将大批小文件合并成一个大文件
      (4)CombineTextInputFormat
      CombineTextInputFormat 用于将多个小文件在切片过程中生成一个单独的切片或者少量的切片。
      (5)开启uber 式,实现jvm重用。
      默认情况下,每个Task 务都需要启动一个jvm运行,如果Task f务计算的数据量很小,我们可以让同一个Job 多个Task运行在一个jvm中,不必为每个Task 开启一个jvm

三、hive操作

1. 创建库,创建表,导入表数据
create database mydb;
use mydb;
create table if not exists student(
    id int, name string
)
row format delimited fields terminated by '\t';
load data local inpath '/opt/module/hive-3.1.2/data/student.txt' into table student;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Hadoop大数据技术是一种开源的分布式计算框架,它能够处理大规模数据集并提供高性能、可伸缩和可靠性的数据处理能力。 Hadoop的核心组件包括Hadoop分布式文件系统(HDFS)和Hadoop分布式计算框架(MapReduce)。HDFS是一个分布式文件系统,可以将大数据集存储在多台计算机上,并提供高容错性和高可用性。MapReduce是一种分布式计算模型,可以将大规模数据集分割成小块,分发给集群中的多个计算节点进行并行处理,最后将结果合并返回。 除了核心组件之外,Hadoop还提供了一些其他工具和组件,如YARN(资源管理系统)、HBase(分布式数据库)、Hive(数据仓库和查询语言)、Pig(数据分析工具)等,这些工具和组件可以与Hadoop一起使用,提供更多丰富的功能和更灵活的数据处理方式。 Hadoop大数据技术的优势主要体现在以下几个方面: 1. 可扩展性:Hadoop能够通过增加计算节点来处理更大规模的数据集,从而实现高性能的数据处理能力。 2. 容错性:Hadoop将数据复制到不同的计算节点上,即使某个节点出现故障,数据依然可以恢复和访问。 3. 成本效益:Hadoop使用廉价的硬件来构建集群,相比传统的大型服务器,成本更低。 4. 处理速度快:由于使用分布式计算模型,Hadoop可以在短时间内处理大规模数据集,提供高速的数据处理能力。 5. 灵活性:Hadoop提供了各种工具和组件,使得开发人员可以根据自己的需求选择最合适的方式来处理数据。 总的来说,Hadoop大数据技术是一个非常强大的数据处理工具,可以帮助企业处理和分析大规模的数据,从而提供更准确、更全面的数据分析和决策支持。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值