1. 下列哪项通常是集群的最主要瓶颈(C)

A. CPU

B. 网络

C. 磁盘IO

D. 内存

2. 下列哪项可以作为集群的管理工具?(C)

A.Puppet

B.Pdsh

C.ClouderaManager

D.Zookeeper

3. 下列哪个是Hadoop 运行的模式?(ABC)

A. 单机版

B. 伪分布式

C. 完全分布式

4. 列举几个hadoop 生态圈的组件并做简要描述

Zookeeper:是一个开源的分布式应用程序协调服务,基于zookeeper 可以实现同步服务, 配置维

护,命名服务。

Flume:一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统。

Hbase:是一个分布式的、面向列的开源数据库, 利用Hadoop HDFS 作为其存储系统。

Hive:基于Hadoop 的一个数据仓库工具,可以将结构化的数据档映射为一张数据库表, 并提供

简单的sql 查询功能,可以将sql 语句转换为MapReduce 任务进行运行。

6. 解释“hadoop”和“hadoop 生态系统”两个概念。

Hadoop 是指Hadoop 框架本身;hadoop 生态系统,不仅包含hadoop,还包括保证hadoop框架正常高效运行其他框架,比如zookeeper、Flume、Hbase、Hive、Sqoop 等辅助框架

7. 简要描述如何安装配置apache 的一个开源Hadoop,只描述即可,无需列出具体步骤,列出具体步骤更好。

1) 使用root 账户登录

2) 修改IP

3) 修改host 主机名

4) 配置SSH 免密码登录

5) 关闭防火墙

6) 安装JDK

7) 解压hadoop 安装包

8) 配置hadoop 的核心文件hadoop-env.sh,core-site.xml , mapred-site.xml ,

hdfs-site.xml

9) 配置hadoop 环境变量

10) 格式化hadoop namenode-format

11)启动节点start-all.sh

8. Hadoop 中需要哪些配置文件,其作用是什么?

1) core-site.xml:

fs.defaultFS:hdfs://cluster1(域名),这里的值指的是默认的HDFS 路径。

hadoop.tmp.dir:/export/data/hadoop_tmp,这里的路径默认是NameNode、DataNode、

secondaryNamenode 等存放数据的公共目录。用户也可以自己单独指定这三类节点的目录。

ha.zookeeper.quorum:hadoop101:2181,hadoop102:2181,hadoop103:2181,这里是

ZooKeeper 集群的地址和端口。注意,数量一定是奇数,且不少于三个节点。

2)hadoop-env.sh:

只需设置jdk 的安装路径,如:export JAVA_HOME=/usr/local/jdk。

3)hdfs-site.xml:

dfs.replication:他决定着系统里面的文件块的数据备份个数,默认为3 个。

dfs.data.dir:datanode 节点存储在文件系统的目录。

dfs.name.dir:是namenode 节点存储hadoop 文件系统信息的本地系统路径。

4)mapred-site.xml:

mapreduce.framework.name: yarn 指定mr 运行在yarn 上。

9. 请列出正常工作的Hadoop 集群中Hadoop 都分别需要启动哪些进程,它们的作用分别是什么?

NameNode 它是hadoop 中的主服务器,管理文件系统名称空间和对集群中存储的文件的访问,

保存有metadate。

SecondaryNameNode 它不是namenode 的冗余守护进程,而是提供周期检查点和清理任务。帮

助NN 合并editslog,减少NN 启动时间。

DataNode 它负责管理连接到节点的存储(一个集群中可以有多个节点)。每个存储数据的节点运

行一个datanode 守护进程。

ResourceManager(JobTracker)JobTracker 负责调度DataNode 上的工作。每个DataNode 有一

个TaskTracker,它们执行实际工作。

NodeManager(TaskTracker)执行任务

DFSZKFailoverController 高可用时它负责监控NN 的状态,并及时的把状态信息写入ZK 。它

通过一个独立线程周期性的调用NN 上的一个特定接口来获取NN 的健康状态。FC 也有选择谁作

为Active NN 的权利,因为最多只有两个节点,目前选择策略还比较简单(先到先得,轮换)。

JournalNode 高可用情况下存放namenode 的editlog 文件.

10. 简述Hadoop 的几个默认端口及其含义

dfs.namenode.http-address:50070

SecondaryNameNode 辅助名称节点端口号:50090

dfs.datanode.address:50010

fs.defaultFS:8020 或者9000

yarn.resourcemanager.webapp.address:8088

11. 简述hadoop实现Join的几种方法

reduce side join

reduce side join是一种最简单的join方式,其主要思想如下:在map阶段,map函数同时读取两个文件File1和File2,为了区分两种来源的key/value数据对,对每条数据打一个标签(tag),比如:tag=0表示来自文件File1,tag=2表示来自文件File2。即:map阶段的主要任务是对不同文件中的数据打标签。

在reduce阶段,reduce函数获取key相同的来自File1和File2文件的value list, 然后对于同一个key,对File1和File2中的数据进行join(笛卡尔乘积)。即:reduce阶段进行实际的连接操作。

map side join

之所以存在reduce side join,是因为在map阶段不能获取所有需要的join字段,即:同一个key对应的字段可能位于不同map中。Reduce side join是非常低效的,因为shuffle阶段要进行大量的数据传输。

Map side join是针对以下场景进行的优化:两个待连接表中,有一个表非常大,而另一个表非常小,以至于小表可以直接存放到内存中。这样,我们可以将小表复制多份,让每个map task内存中存在一份(比如存放到hash table中),然后只扫描大表:对于大表中的每一条记录key/value,在hash table中查找是否有相同的key的记录,如果有,则连接后输出即可。

为了支持文件的复制,Hadoop提供了一个类DistributedCache,使用该类的方法如下:

(1)用户使用静态方法DistributedCache.addCacheFile()指定要复制的文件,它的参数是文件的URI(如果是HDFS上的文件,可以这样:hdfs://namenode:9000/home/XXX/file,其中9000是自己配置的NameNode端口号)。JobTracker在作业启动之前会获取这个URI列表,并将相应的文件拷贝到各个TaskTracker的本地磁盘上。

(2)用户使用DistributedCache.getLocalCacheFiles()方法获取文件目录,并使用标准的文件读写API读取相应的文件。

SemiJoin

SemiJoin,也叫半连接,是从分布式数据库中借鉴过来的方法。它的产生动机是:对于reduce side join,跨机器的数据传输量非常大,这成了join操作的一个瓶颈,如果能够在map端过滤掉不会参加join操作的数据,则可以大大节省网络IO。

实现方法很简单:选取一个小表,假设是File1,将其参与join的key抽取出来,保存到文件File3中,File3文件一般很小,可以放到内存中。在map阶段,使用DistributedCache将File3复制到各个TaskTracker上,然后将File2中不在File3中的key对应的记录过滤掉,剩下的reduce阶段的工作与reduce side join相同。

大数据面试题(一)----HADOOP 面试题的更多相关文章

  1. 大数据平台搭建(hadoop+spark)

    大数据平台搭建(hadoop+spark) 一.基本信息 1. 服务器基本信息 主机名 ip地址 安装服务 spark-master 172.16.200.81 jdk.hadoop.spark.sc ...

  2. 大数据学习系列之四 ----- Hadoop+Hive环境搭建图文详解(单机)

    引言 在大数据学习系列之一 ----- Hadoop环境搭建(单机) 成功的搭建了Hadoop的环境,在大数据学习系列之二 ----- HBase环境搭建(单机)成功搭建了HBase的环境以及相关使用 ...

  3. 大数据学习系列之六 ----- Hadoop+Spark环境搭建

    引言 在上一篇中 大数据学习系列之五 ----- Hive整合HBase图文详解 : http://www.panchengming.com/2017/12/18/pancm62/ 中使用Hive整合 ...

  4. 大数据学习系列之七 ----- Hadoop+Spark+Zookeeper+HBase+Hive集群搭建 图文详解

    引言 在之前的大数据学习系列中,搭建了Hadoop+Spark+HBase+Hive 环境以及一些测试.其实要说的话,我开始学习大数据的时候,搭建的就是集群,并不是单机模式和伪分布式.至于为什么先写单 ...

  5. 大数据实时计算工程师/Hadoop工程师/数据分析师职业路线图

    http://edu.51cto.com/roadmap/view/id-29.html http://my.oschina.net/infiniteSpace/blog/308401 大数据实时计算 ...

  6. 大数据学习笔记之Hadoop(一):Hadoop入门

    文章目录 大数据概论 一.大数据概念 二.大数据的特点 三.大数据能干啥? 四.大数据发展前景 五.企业数据部的业务流程分析 六.企业数据部的一般组织结构 Hadoop(入门) 一 从Hadoop框架 ...

  7. 阿里巴巴飞天大数据架构体系与Hadoop生态系统

    很多人问阿里的飞天大数据平台.云梯2.MaxCompute.实时计算到底是什么,和自建Hadoop平台有什么区别. 先说Hadoop 什么是Hadoop? Hadoop是一个开源.高可靠.可扩展的分布 ...

  8. 大数据软件安装之Hadoop(Apache)(数据存储及计算)

    大数据软件安装之Hadoop(Apache)(数据存储及计算) 一.生产环境准备 1.修改主机名 vim /etc/sysconfig/network 2.修改静态ip vim /etc/udev/r ...

  9. 大数据组件原理总结-Hadoop、Hbase、Kafka、Zookeeper、Spark

    Hadoop原理 分为HDFS与Yarn两个部分.HDFS有Namenode和Datanode两个部分.每个节点占用一个电脑.Datanode定时向Namenode发送心跳包,心跳包中包含Datano ...

  10. 了解大数据的技术生态系统 Hadoop,hive,spark(转载)

    首先给出原文链接: 原文链接 大数据本身是一个很宽泛的概念,Hadoop生态圈(或者泛生态圈)基本上都是为了处理超过单机尺度的数据处理而诞生的.你能够把它比作一个厨房所以须要的各种工具. 锅碗瓢盆,各 ...

随机推荐

  1. webhook功能概述

    1.什么是webhook? webhooks是一个api概念,是微服务api的使用范式之一,也被成为反向api,即:前端不主动发送请求,完全由后端推送. 举个常用例子,比如你的好友发了一条朋友圈,后端 ...

  2. nginx部署vue跨域proxy方式

    server { listen 80; charset utf-8; #server_name localhost; server_name you_h5_name; ###VUE项目H5域名 err ...

  3. 机器学习之路--Pandas

    Pandas 是对numpy的封装 Pandas 核心结构DataFrame 近似看出矩阵结构panda字符型叫object dataframe其中一行或者一列叫series dataframe 里面 ...

  4. ACWing 248. 窗内的星星|扫描线+懒惰标记

    传送门 题目描述 在一个天空中有很多星星(看作平面直角坐标系),已知每颗星星的坐标和亮度(都是整数). 求用宽为W.高为H的矩形窗户(W,H为正整数)能圈住的星星的亮度总和最大是多少.(矩形边界上的星 ...

  5. The command '/bin/sh -c unzip -o php-7.2.23-src.zip' returned a non-zero code: 1

    Dockerfile 内容 #centos7 nginx php redis inotify FROM centos:7 MAINTAINER INFOBIRD RUN yum -y update & ...

  6. SPFA判负环模板

    void DFS_SPFA(int u){   if(flag) return; vis[u]=true;   for(int i=head[u];i;i=edges[i].nxt){   if(fl ...

  7. 替代not in 和 in 的办法

    在程序中,我们经常会习惯性的使用in和not in,在访问量比较小的时候是可以的,但是一旦数据量大了,我们就推荐使用not exists或者外连接来代替了.如果要实现一张表有而另外一张表没有的数据时, ...

  8. GitHub进阶之利用Git远程仓库篇

    #在上一篇文章,相信大家对GitHub已经有了一个基础的理解 接下来我们来学习一下如何利用git来远程仓库 一,git是什么 git:一个免费的开源版本控制软件 用途:利用Git管理GitHub上的代 ...

  9. JAVA中常用的异常处理方法

    1.在Java项目中经常遇到的异常情况 算术异常类:ArithmeticExecption 空指针异常类:NullPointerException 类型强制转换异常:ClassCastExceptio ...

  10. Django 数据库连接缓存的坑

    https://www.cnblogs.com/xcsg/p/11446990.html