大数据开发面试汇总——day1(持续更新)

1、首先就是做个自我介绍,完事会介绍到自己所参与过的项目(感觉有点紧张,没有表达出来);

2、问到hadoop相关的知识,但是没有答上来,接下来做一个总结:

        HDFS、YARN、MapReduce 是Apache Hadoop生态系统中的三个重要组件。

        HDFS是Hadoop分布式文件系统,是Hadoop的存储层,用于存储和处理大规模数据集。HDFS将大数据文件切分成多个块,然后存储在不同的服务器上,以实现数据的分布式存储和处理。端口号是:50070

        MapReduce是Hadoop的计算引擎,用于对大规模数据集进行分布式处理。它的核心思想是将大规模数据集分割成小规模数据集,然后将这些小规模数据集分发到多个服务器上进行并行计算。MapReduce将数据的处理逻辑分解成两个部分:Map和Reduce。Map负责数据的切割和处理,Reduce负责对Map处理的结果进行汇总和计算。

        YARN(Yet Another Resource Negotiator)是Hadoop的资源管理器,用于管理Hadoop集群中的资源。它主要负责集群资源的分配和管理,为MapReduce等计算框架提供计算资源。YARN将计算资源进行抽象和管理,将计算框架与资源管理框架分离,允许多个计算框架共享同一个资源池。端口号:8088

        综上所述,HDFS提供了数据的分布式存储和管理,MapReduce提供了大规模数据集的分布式处理,而YARN则提供了资源的管理和调度。它们三者相互配合,形成了Hadoop的分布式计算框架,可以支持大规模数据集的存储、处理和分析。

3、HDFS的读写过程:

        先理解HDFS中的两大节点:namenode和datenode,namenode是HDFS主节点,存储元数据,元数据存储的就是目录结构和文件分块信息,datenode是HDFS从节点,存储数据块,即实际数据;

        HDFS的主要特点就是分而治之,文件切块,副本存放;

        写入流程:

        ①客户端向 NameNode 请求上传文件

        ② NameNode 接收到请求后,检查目标文件是否已存在,父目录是否存在,返回是否可以上传

        ③客户端请求第一个 block 该传输到哪些 DataNode 服务器上

        ④ NameNode 返回数据块所在的数据节点列表给客户端

        ⑤客户端根据数据节点列表,选择一个数据节点作为主节点

        ⑥客户端将数据块通过网络传输给主节点,主节点将数据块存储在本地磁盘上,并复制到其他数据节点

        ⑦所有数据节点完成数据写入后,主节点向 NameNode 发送写入完成的通知

        ⑧ NameNode 更新文件的元数据信息,包括文件大小、数据块的位置等

        读出流程:

        ①客户端向 NameNode 请求读取文件的数据块信息

        ② NameNode 会视情况返回文件的部分或者全部 block 列表,对于每个 block,NameNode 都会返回含有该 block 副本的 DataNode 地址

        ③客户端根据数据节点列表选择一个数据节点作为主节点,向主节点发送读取数据块的请求

        ④当读完列表的 block 后,若文件读取还没有结束,客户端会继续向 NameNode 获取下一批的 block 列表

        ⑤读取完一个 block 都会进行 checksum 验证(我理解为TCP/IP中的序号),如果读取 DataNode 时出现错误,客户端会通知 NameNode,然后再从下一个拥有该 block 副本的 DataNode 继续读

        ⑥读取完所有的block后,合并成为一个完整的文件

4、如何理解Hive

        Hive就是基于hadoop的数仓工具,Hive处理的数据存储在HDFS,分析数据底层实现是MapReduce,执行程序运行在Yarn上;使用类SQL的方式对数据进行读、写及管理,即HQL,Hive会将HQL翻译成MapReduce进行数据计算。

Hive的体系结构分为:
1、用户连接接口
    ①CLI 是指 Shell命令行
    ②JDBC 指Hive的java实现,使用户可以通过java代码操作数据库
    ③WebUI 是指可以通过浏览器访问Hive
2、thriftserver
    允许客户端使用包括java、c++和其他很多种语言,通过编程的方式远程访问Hive。
3、元数据
    Hive中的元数据包括(表名、表所属的数据库名、表的拥有者、列/分区字段、表的类型(是否是外部表)、表的数据所在目录等)
4、驱动器
    ①解析器:判断表是否存在、字段是否存在、SQL语义
    ②编译器:进行语法编译(关联元数据),生成执行计划(即编译成mapreduce的job)
    ③优化器:优化job
    ④执行器:将优化后的执行计划提交给hadoop的yarn上执行
5、hadoop
    Hive的数据存储在HDFS中,大部分的查询、计算由MapReduce完成

5、linux中的常用命令

        具体的总结可以参考其他博主的文章,我总结几个我模糊不清的命令(除了三贱客,这玩意是真没理解透);

        查看进程:top ——动态查看进程信息,ps -ef ——静态查看进程信息

        查看当前目录所占存储情况:du -lh——查看当前文件下各文件夹占用存储空间,du -sh——查看当前文件夹所占存储空间

        显示已经挂载的分区列表 :df -h 

        显示系统内存的使用情况,包括物理内存、交换内存(swap)和内核缓冲区内存:free -h

        查看系统分区挂载情况:lsblk

        查看端口号:netstat -nltp

6、简述数仓的分层

        最下层是DB层,存放原始数据,将数据直抽到ODS层,然后通过etl工具对ODS层数据进行清洗、转换,载入到dw层,在dw层中需要根据业务需求生成宽表,然后按照相应的指标计算方式查询出数据给到dm层,最后dm层通过计算给到APP层。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值