目录

  • Hadoop项目经验
    • HDFS存储多目录
    • 支持LZO压缩配置
    • LZO 创建索引
    • 基准测试
    • Hadoop参数调优

Hadoop项目经验

HDFS存储多目录

1.确认HDFS的存储目录,保证存储在空间最大硬盘上

2.在hdfs-site.xml文件中配置多目录,最好提前配置好,否则更改目录需要重新启动集群,在 hdfs-site.xml 文件中配置多目录,注意新挂载磁盘的访问权限问题。

<property><name>dfs.datanode.data.dir</name>
<value>file:///${hadoop.tmp.dir}/dfs/data1,file:///hd2/dfs/data2,file:///hd3/dfs/data3,file:///hd4/dfs/data4</value>
</property>

3.增加磁盘后,保证每个目录数据均衡
开启数据均衡命令:

bin/start-balancer.sh –threshold 10

对于参数 10,代表的是集群中各个节点的磁盘空间利用率相差不超过 10%,可根据实际情况进行调整。
停止数据均衡命令:

bin/stop-balancer.sh

支持LZO压缩配置

1.先下载lzo的jar项目

https://github.com/twitter/hadoop-lzo/archive/master.zip

下载后的文件名是hadoop-lzo-master,它是一个zip格式的压缩包,先进行解压,然后用maven编译。生成hadoop-lzo-0.4.20.jar。
下面提供hadoop-lzo-0.4.20.jar包
链接:https://pan.baidu.com/s/1TfENZhaYi7ktJ6CLqDD5SA
提取码:az5t
2.将编译好后的hadoop-lzo-0.4.20.jar 放入hadoop-2.7.7/share/hadoop/common/
3.同步 hadoop-lzo-0.4.20.jar 到 hadoop13、hadoop14

 xsync hadoop-lzo-0.4.20.jar

4.core-site.xml 增加配置支持 LZO 压缩

<property>
<name>io.compression.codecs</name>
<value>
org.apache.hadoop.io.compress.GzipCodec,
org.apache.hadoop.io.compress.DefaultCodec,
org.apache.hadoop.io.compress.BZip2Codec,
org.apache.hadoop.io.compress.SnappyCodec,
com.hadoop.compression.lzo.LzoCodec,
com.hadoop.compression.lzo.LzopCodec
</value>
</property><property><name>io.compression.codec.lzo.class</name><value>com.hadoop.compression.lzo.LzoCodec</value>
</property>

5.同步 hadoop-lzo-0.4.20.jar 到 hadoop13、hadoop14

xsync core-site.xml

6.启动及查看集群

start-all.sh

LZO 创建索引

1.创建 LZO 文件的索引,LZO 压缩文件的可切片特性依赖于其索引,故我们需要手动为 LZO 压缩文件创建索引。若无索引,则 LZO 文件的切片只有一个。

hadoop jar /path/to/your/hadoop-lzo.jar com.hadoop.compression.lzo.DistributedLzoIndexer big_file.lzo

2.测试
(1)将 bigtable.lzo(150M)上传到集群的根目录

 hadoop fs -mkdir /inputhadoop fs -put bigtable.lzo /input

(2)执行 wordcount 程序

 hadoop jar /export/servers/hadoop-2.7.7/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar wordcount /input /output

(3)对上传的 LZO 文件建索引

 hadoop jar /export/servers/hadoop-2.7.7/share/hadoop/common/hadoop-lzo-0.4.20.jar com.hadoop.compression.lzo.DistributedLzoIndexer /input/bigtable.lzo

(4)再次执行 WordCount 程序

hadoop jar /export/servers/hadoop-2.7.7/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar wordcount /input /output

基准测试

测试 HDFS 写性能
(1)测试内容:向 HDFS 集群写 10 个 128M 的文件

hadoop jar /export/servers/hadoop-2.7.7/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-2.7.7-tests.jar TestDFSIO -write -nrFiles 10 -fileSize 128MB


(2)测试HDFS读性能

hadoop jar /export/servers/hadoop-2.7.7/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-2.7.7-tests.jar TestDFSIO -read -nrFiles 10 -fileSize 128MB


使用 Sort 程序评测 MapReduce
(1)使用 RandomWriter 来产生随机数,每个节点运行 10 个 Map 任务,每个 Map 产 生大约 1G 大小的二进制随机数

hadoop jar /export/servers/hadoop-2.7.7/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar randomwriter random-data

(2)执行 Sort 程序

hadoop jar /export/servers/hadoop-2.7.7/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar sort random-data sorted-data

(3)验证数据是否真正排好序了

hadoop jar /export/servers/hadoop-2.7.7/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar testmapredsort -sortInput random-data -sortOutput sorted-data

Hadoop参数调优

(1)HDFS 参数调优 hdfs-site.xml
dfs.namenode.handler.count=20 * log2(Cluster Size),比如集群规模为 8 台时,此参数设 置为 60

The number of Namenode RPC server threads that listen to requests fromclients.Ifdfs.namenode.servicerpc-addressisnotconfigured then Namenode RPC server threads listen to requests from all nodes. NameNode有一个工作线程池,用来处理不同 DataNode的并发心跳以及客户端并发 的元数据操作。对于大集群或者有大量客户端的集群来说,通常需要增大参数 dfs.namenode.handler.count 的默认值10。设置该值的一般原则是将其设置为集群大小的自然对数乘以20,即20logN,N为集群大小。

(2)YARN 参数调优 yarn-site.xml
(1)情景描述:总共 7 台机器,每天几亿条数据,数据源->Flume->Kafka->HDFS->Hive 面临问题:
数据统计主要用 HiveSQL,没有数据倾斜,小文件已经做了合并处理,开启的 JVM 重用,而且 IO 没有阻塞,内存用了不到 50%。但是还是跑的非常慢,而且数据量洪峰过来时,整个集群都会宕掉。基于这种情况有没有优化方案。
(2)解决办法:
内存利用率不够。这个一般是 Yarn 的 2 个配置造成的,单个任务可以申请的最大内存大小,和 Hadoop 单个节点可用内存大小。调节这两个参数能提高系统内存的利用率。
(a)yarn.nodemanager.resource.memory-mb
表示该节点上 YARN 可使用的物理内存总量,默认是 8192(MB),注意,如果你的节点内存资源不够 8GB,则需要调减小这个值,而 YARN 不会智能的探测节点的物理内存总量。
(b)yarn.scheduler.maximum-allocation-mb
单个任务可申请的最多物理内存量,默认是 8192(MB)。

NodeManager默认内存8G
任务默认内存8G wordcount
MapTask和ReduceTask的默认内存是1G
128M对应MapTask 1G内存
1G数据=8GMapTask内存+ReduceTask2G=10G 调整默然内存10G

(3)Hadoop 宕机
(1)如果 MR 造成系统宕机。此时要控制 Yarn 同时运行的任务数,和每个任务申请的最大内存。调整参数:yarn.scheduler.maximum-allocation-mb(单个任务可申请的最多物理内存量,默认是8192MB)
(2)如果写入文件过量造成 NameNode 宕机。那么调高 Kafka 的存储大小,控制从 Kafka到 HDFS 的写入速度。高峰期的时候用 Kafka 进行缓存,高峰期过去数据同步会自动跟上。 (batchsize来控制)

大数据之电商数仓(2) | 项目经验之Hadoop相关推荐

  1. 大数据Flink电商数仓实战项目流程全解(一)

    项目整体思路和架构 项目最终成果展示: 本项目主要参考尚硅谷的Flink实时数仓项目完成,最近又重新跑了一遍,项目整体我会在后续上传到码云中, 也会逐步同步更新到博客中来,里面不仅包含了整体代码和整个 ...

  2. 基于大数据技术之电视收视率企业项目实战(hadoop+Spark)

    基于大数据技术之电视收视率企业项目实战(hadoop+Spark) 网盘地址:https://pan.baidu.com/s/1bEeSB1Y9nmjzctnbJMcBkg 密码:dohg 备用地址( ...

  3. 大数据电商数仓分析项目

  4. 企业级数仓构建项目一-大数据Week12-DAY1-企业级数仓构建项目一

    游戏行业数据仓库-用户行为数仓 1.数据仓库的基本概念 1.什么是数据仓库 W.H.Inmon在< Building the Data Warehouse >一书中,对数据仓库的定义为: ...

  5. 大数据项目之电商数仓离线计算

    本次项目是基于企业大数据的电商经典案例项目(大数据日志以及网站数据分析),业务分析.技术选型.架构设计.集群规划.安装部署.整合继承与开发和web可视化交互设计. 1.系统数据流程设计 我这里主要分享 ...

  6. 大数据技术之Flink理论到项目

    转载自:https://www.javaxxz.com/thread-397416-1-1.html 一.Flink简介 如今的大数据技术应用场景,对实时性的要求已经越来越高.作为新一代大数据流处理框 ...

  7. 尚硅谷大数据项目之电商数仓(4即席查询数据仓库)

    尚硅谷大数据项目之电商数仓(即席查询) (作者:尚硅谷大数据研发部) 版本:V4.0 第1章 Presto 1.1 Presto简介 1.1.1 Presto概念 1.1.2 Presto架构 1.1 ...

  8. 2 大数据电商数仓项目——项目需求及架构设计

    2 大数据电商数仓项目--项目需求及架构设计 2.1 项目需求分析 用户行为数据采集平台搭建. 业务数据采集平台搭建. 数据仓库维度建模(核心):主要设计ODS.DWD.DWS.AWT.ADS等各个层 ...

  9. 电商数仓描述_笔记-尚硅谷大数据项目数据仓库-电商数仓V1.2新版

    架构 项目框架 数仓架构 存储压缩 Snappy与LZO LZO安装: 读取LZO文件时,需要先创建索引,才可以进行切片. 框架版本选型Apache:运维麻烦,需要自己调研兼容性. CDH:国内使用最 ...

最新文章

  1. 自学python还是报班-零基础学Python是应该报课还是自学?
  2. Scott用户的表结构
  3. 关于 SAP Spartacus 支持不同的环境配置部署到 SAP Commerce Cloud 上的讨论
  4. Tomcat7性能优化
  5. Linux桌面文件被隐藏,在Deepin系统中隐藏桌面图标的好办法
  6. 雷达传感器应用,微波雷达感应模块,物联网传感技术发展
  7. 博客背景壁纸推荐(一)CSDN图床
  8. 使用vue音频播放器(vue-aplayer)详解
  9. css实现气泡框小尾巴
  10. Project build error: Non-resolvable parent POM for com.example:demo:0.0.1-SNAPSHOT: Could not transf
  11. 服务器部署MySQL过程
  12. 试题 算法训练 24点
  13. ubuntu安装NVIDIA显卡驱动(简单有效)
  14. 多线程——问题引出以及解决方法
  15. 导入Unity的模型在播放动画时手脚会轻微晃动(抖动)
  16. Leet Code 力扣 - - 最短最优雅python解法带解析汇总
  17. 从根儿上理解虚拟内存
  18. 如何设计安全可靠的开放接口---对请求参加密保护
  19. 支持delphi 11的Raize Components已更名为Konopka Signature VCL Controls(附下载)
  20. 道德经·太上,不知有之

热门文章

  1. qpixmap mysql_QPixmap和QImage的区别及剖析
  2. 魔众问答系统 v1.4.0 后台菜单快捷搜索 修复已知问题
  3. Surface 系统恢复
  4. linux server下载64位,ubuntu 16.04服务器版
  5. 机器学习基础(一)——线性代数
  6. 点滴报警器——滴数控制模块(步进电机——ULN2003A)
  7. Swift-类和结构体
  8. 仿短信条目右上角的红色小圆球提示气泡
  9. 發送郵件中常见的异常信息
  10. python检测网络连接状态的四种方法