百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

大数据核心技术高频面试题(一)

bigegpt 2024-09-12 11:19 46 浏览


Linux&Shell

Linux 常用高级命令

Shell 常用工具及写过的脚本

1) awk 、 sed 、 cut 、 sort

2) 用 Shell 写过哪些脚本

(1) 集群启动, 分发脚本

#!/bin/bash

case $1 in

"start")

for i in hadoop102 hadoop103 hadoop104

do

ssh $i "绝对路径"

done

;;

"stop")

;;

esac

(2) 数仓层级内部的导入: ods->dwd->dws ->ads

①#!/bin/bash

②定义变量 APP=gmall

③获取时间

传入 按照传入时间

不传 T+ 1

④sql="

先按照当前天 写 sql => 遇到时间 $do_date 遇到表 {$APP}.

自定义函数 UDF UDTF {$APP}.

"

⑤执行 sql

Shell 中单引号和双引号区别

1) 在/home/atguigu/bin 创建一个 test.sh 文件

[atguigu@hadoop102 bin]$ vim test.sh

在文件中添加如下内容

# !/bin/bash

do_date=$1

echo '$do_date '

echo "$do_date"

echo " '$do_date '"

echo '"$do_date" '

echo `date`

2) 查看执行结果

[atguigu@hadoop102 bin]$ test.sh 2022-02-10

$do_date

2022-02-10

'2022-02-10 '

"$do_date"

2022 年 05 月 02 日 星期四 21:02:08 CST

3) 总结:

(1) 单引号不取变量值

(2) 双引号取变量值

(3) 反引号`, 执行引号中命令

(4) 双引号内部嵌套单引号, 取出变量值

(5) 单引号内部嵌套双引号, 不取出变量值

Hadoop

Hadoop 常用端口号

HDFS 读流程和写流程

注意: HDFS 写入流程时候, 某台 dataNode 挂掉如何运行?

当 DataNode 突然挂掉了, 客户端接收不到这个 DataNode 发送的 ack 确认, 客户端会通 知 NameNode, NameNode 检查并确认该块的副本与规定的不符, NameNode 会通知闲置的 DataNode 去复制副本, 并将挂掉的 DataNode 作下线处理 。 等挂掉的 DataNode 节点恢复后, 删除该节点中曾经拷贝的不完整副本数据。

HDFS 小文件处理

1) 会有什么影响

(1) 存储层面

1 个文件块, 占用 namenode 多大内存 150 字节

128G 能存储多少文件块? 128 g* 1024m*1024kb*1024byte/ 150 字节 = 9. 1 亿文

件块

(2) 计算层面

每个小文件都会起到一个 MapTask, 1 个 MapTask 默认内存 1G 。 浪费资源。

2) 怎么解决

(1) 采用har 归档方式, 将小文件归档

(2) 采用 CombineTextInputFormat

(3) 自己写一个 MR 程序将产生的小文件合并成一个大文件 。 如果是 Hive 或者 Spark 有 merge 功能自动帮助我们合并。

(4) 有小文件场景开启 JVM 重用; 如果没有小文件, 不要开启 JVM 重用, 因为会一 直占用使用到的 Task 卡槽, 直到任务完成才释放。

JVM 重用可以使得 JVM 实例在同一个 job 中重新使用 N 次, N 的值可以在 Hadoop 的

mapred-site.xml 文件中进行配置 。 通常在 10-20 之间。

<property>

<name>mapreduce.job.jvm.numtasks</name>

<value>10</value>

<description>How many tasks to run per jvm,if set to -1 ,there is

no limit</description>

</property>

HDFS 的 NameNode 内存

1) Hadoop2.x 系列, 配置 NameNode 默认 2000m

2) Hadoop3.x 系列, 配置 NameNode 内存是动态分配的

NameNode 内存最小值 1G, 每增加 100 万个文件block, 增加 1G 内存。

Shuffle 及优化

Yarn 工作机制

Yarn 调度器

1) Hadoop 调度器重要分为三类

FIFO 、 Capacity Scheduler (容量调度器) 和 Fair Sceduler (公平调度器)。 Apache 默认的资源调度器是容量调度器。

CDH 默认的资源调度器是公平调度器。

2) 区别

FIFO 调度器: 支持单队列 、 先进先出 生产环境不会用。

容量调度器: 支持多队列 。 队列资源分配, 优先选择资源占用率最低的队列分配资源; 作业资源分配, 按照作业的优先级和提交时间顺序分配资源; 容器资源分配, 本地原则 (同 一节点/同一机架/不同节点不同机架)。

公平调度器: 支持多队列, 保证每个任务公平享有队列资源。资源不够时可以按照缺额 分配。

3) 在生产环境下怎么选择?

大厂: 如果对并发度要求比较高, 选择公平, 要求服务器性能必须 OK。 中小公司, 集群服务器资源不太充裕选择容量。

4) 在生产环境怎么创建队列?

(1) 调度器默认就 1 个 default 队列, 不能满足生产要求。

(2) 按照部门: 业务部门 1 、 业务部门 2。

(3) 按照业务模块: 登录注册 、 购物车 、 下单。

5) 创建多队列的好处?

(1) 因为担心员工不小心, 写递归死循环代码, 把所有资源全部耗尽。

(2) 实现任务的降级使用, 特殊时期保证重要的任务队列资源充足。

业务部门 1 (重要) = 》业务部门 2 (比较重要) = 》下单 (一般) = 》购物车 (一般) = 》 登录注册 (次要)

HDFS 块大小

1) 块大小

2) 块大小决定因素

磁盘读写速度

普通的机械硬盘 100m/s => 128m

固态硬盘普通的 300m/s => 256m

内存镜像 500-600m/s => 512m

1.2.9 Hadoop 脑裂原因及解决办法?

1) 出现脑裂的原因

Leader 出现故障, 系统开始改朝换代, 当 Follower 完成全部工作并且成为 Leader 后, 原 Leader 又复活了 (它的故障可能是暂时断开或系统暂时变慢, 不能及时响应, 但其 NameNode 进程还在), 并且由于某种原因它对应的 ZKFC 并没有把它设置为 Standby, 所以 原 Leader 还认为自己是 Leader, 客户端向它发出的请求仍会响应, 于是脑裂就发生了。

2) Hadoop 通常不会出现脑裂。

如果出现脑裂,意味着多个 Namenode 数据不一致,此时只能选择保留其中一个的数据。 例如: 现在有三台 Namenode, 分别为 nn1 、 nn2 、 nn3, 出现脑裂, 想要保留 nn1 的数据, 步骤为:

(1) 关闭 nn2 和 nn3

(2) 在 nn2 和 nn3 节点重新执行数据同步命令: hdfs namenode -bootstrapStandby

(3) 重新启动 nn2 和 nn3

相关推荐

得物可观测平台架构升级:基于GreptimeDB的全新监控体系实践

一、摘要在前端可观测分析场景中,需要实时观测并处理多地、多环境的运行情况,以保障Web应用和移动端的可用性与性能。传统方案往往依赖代理Agent→消息队列→流计算引擎→OLAP存储...

warm-flow新春版:网关直连和流程图重构

本期主要解决了网关直连和流程图重构,可以自此之后可支持各种复杂的网关混合、多网关直连使用。-新增Ruoyi-Vue-Plus优秀开源集成案例更新日志[feat]导入、导出和保存等新增json格式支持...

扣子空间体验报告

在数字化时代,智能工具的应用正不断拓展到我们工作和生活的各个角落。从任务规划到项目执行,再到任务管理,作者深入探讨了这款工具在不同场景下的表现和潜力。通过具体的应用实例,文章展示了扣子空间如何帮助用户...

spider-flow:开源的可视化方式定义爬虫方案

spider-flow简介spider-flow是一个爬虫平台,以可视化推拽方式定义爬取流程,无需代码即可实现一个爬虫服务。spider-flow特性支持css选择器、正则提取支持JSON/XML格式...

solon-flow 你好世界!

solon-flow是一个基础级的流处理引擎(可用于业务规则、决策处理、计算编排、流程审批等......)。提供有“开放式”驱动定制支持,像jdbc有mysql或pgsql等驱动,可...

新一代开源爬虫平台:SpiderFlow

SpiderFlow:新一代爬虫平台,以图形化方式定义爬虫流程,不写代码即可完成爬虫。-精选真开源,释放新价值。概览Spider-Flow是一个开源的、面向所有用户的Web端爬虫构建平台,它使用Ja...

通过 SQL 训练机器学习模型的引擎

关注薪资待遇的同学应该知道,机器学习相关的岗位工资普遍偏高啊。同时随着各种通用机器学习框架的出现,机器学习的门槛也在逐渐降低,训练一个简单的机器学习模型变得不那么难。但是不得不承认对于一些数据相关的工...

鼠须管输入法rime for Mac

鼠须管输入法forMac是一款十分新颖的跨平台输入法软件,全名是中州韵输入法引擎,鼠须管输入法mac版不仅仅是一个输入法,而是一个输入法算法框架。Rime的基础架构十分精良,一套算法支持了拼音、...

Go语言 1.20 版本正式发布:新版详细介绍

Go1.20简介最新的Go版本1.20在Go1.19发布六个月后发布。它的大部分更改都在工具链、运行时和库的实现中。一如既往,该版本保持了Go1的兼容性承诺。我们期望几乎所...

iOS 10平台SpriteKit新特性之Tile Maps(上)

简介苹果公司在WWDC2016大会上向人们展示了一大批新的好东西。其中之一就是SpriteKitTileEditor。这款工具易于上手,而且看起来速度特别快。在本教程中,你将了解关于TileE...

程序员简历例句—范例Java、Python、C++模板

个人简介通用简介:有良好的代码风格,通过添加注释提高代码可读性,注重代码质量,研读过XXX,XXX等多个开源项目源码从而学习增强代码的健壮性与扩展性。具备良好的代码编程习惯及文档编写能力,参与多个高...

Telerik UI for iOS Q3 2015正式发布

近日,TelerikUIforiOS正式发布了Q32015。新版本新增对XCode7、Swift2.0和iOS9的支持,同时还新增了对数轴、不连续的日期时间轴等;改进TKDataPoin...

ios使用ijkplayer+nginx进行视频直播

上两节,我们讲到使用nginx和ngixn的rtmp模块搭建直播的服务器,接着我们讲解了在Android使用ijkplayer来作为我们的视频直播播放器,整个过程中,需要注意的就是ijlplayer编...

IOS技术分享|iOS快速生成开发文档(一)

前言对于开发人员而言,文档的作用不言而喻。文档不仅可以提高软件开发效率,还能便于以后的软件开发、使用和维护。本文主要讲述Objective-C快速生成开发文档工具appledoc。简介apple...

macOS下配置VS Code C++开发环境

本文介绍在苹果macOS操作系统下,配置VisualStudioCode的C/C++开发环境的过程,本环境使用Clang/LLVM编译器和调试器。一、前置条件本文默认前置条件是,您的开发设备已...