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层。