文档章节

hadoop面试记录(二)

等待救赎
 等待救赎
发布于 2016/03/22 23:29
字数 1488
阅读 325
收藏 5
最近面试面试题,回答自己总结的,有不对的地方欢迎大家留言指正
1 hadoop中配置文件有哪些,各自作用?
hadoop-env.sh 
    JAVA_HOME,HADOOP_CONF_DIR,HADOOP_LOG_DIR,HADOOP_PID_DIR,HADOOP_CLASSPATH,hadoop相关进程JVM参数
    其他
core-site.xml
    fs.defaultFS,hadoop.tmp.dir,ha.zookeeper.quorum,io.compression.codecs,io.file.buffer.size
hdfs-site.xml
    namenode的url信息,dfs.name.dir,dfs.data.dir,dfs.replication,dfs.namenode.shared.edits.dir,
    dfs.journalnode.edits.dir,dfs.hosts.exclude
slaves 
    datanode列表
mapred-site.xml
    mapreduce.framework.name,mapreduce.map.output.compress.codec
yarn-site.xml
    resourcemanager信息
excludes
    排除节点列表

2 hdfs存储机制是什么

1. HDFS开创性地设计出一套文件存储方式,即对文件分割后分别存放;
2. HDFS将要存储的大文件进行分割,分割后存放在既定的存储块(Block)中,并通过预先设定的优化处理,模式对存储的数据进行预处理,从而解决了大文件储存与计算的需求;
3. 一个HDFS集群包括两大部分,即NameNode与DataNode。一般来说,一个集群中会有一个NameNode和多个DataNode共同工作;
4. NameNode是集群的主服务器,主要是用于对HDFS中所有的文件及内容数据进行维护,并不断读取记录集群中DataNode主机情况与工作状态,并通过读取与写入镜像日志文件的方式进行存储;
5. DataNode在HDFS集群中担任任务具体执行角色,是集群的工作节点。文件被分成若干个相同大小的数据块,分别存储在若干个DataNode上,DataNode会定期向集群内NameNode发送自己的运行状态与存储内容,并根据NameNode发送的指令进行工作;
6. NameNode负责接受客户端发送过来的信息,然后将文件存储位置信息发送给提交请求的客户端,由客户端直接与DataNode进行联系,从而进行部分文件的运算与操作。
7. Block是HDFS的基本存储单元,默认大小是64M(hadoop2中时128M);
8. HDFS还可以对已经存储的Block进行多副本备份,将每个Block至少复制到3个相互独立的硬件上,这样可以快速恢复损坏的数据;
9. 用户可以使用既定的API接口对HDFS中的文件进行操作;
10. 当客户端的读取操作发生错误的时候,客户端会向NameNode报告错误,并请求NameNode排除错误的DataNode后后重新根据距离排序,从而获得一个新的DataNode的读取路径。如果所有的DataNode都报告读取失败,那么整个任务就读取失败;
11. 对于写出操作过程中出现的问题,FSDataOutputStream并不会立即关闭。客户端向NameNode报告错误信息,并直接向提供备份的DataNode中写入数据。备份DataNode被升级为首选DataNode,并在其余2个DataNode中备份复制数据。NameNode对错误的DataNode进行标记以便后续对其进行处理。

3 怎么查看,删除,移动,拷贝hadoop文件

hdfs dfs -text ...
hdfs dfs -rm ...
hdfs dfs -mv ...
hdfs dfs -cp ...

4 hadoop中combiner作用

1、combiner类似本地的reduce功能.实现本地key的聚合,减清到reduce的io压力

5 mr工作原理,距离说明mr是怎样运行的

不确定是不是回答这个图


6 hive与oracle区别,目前hive不支持哪些函数(列出5个以上)
hive处理数据量较大,高延迟,基于hdfs,hql转换成mr执行,不支持数据修改
oracle处理数据量相对较小,有所有,低延迟,支持数据修改
7 hbase常用基本命令,创建表,添加记录,查看记录,删除记录
create '表名称','列族名称1','列名族称2','列名族称N'
put '表名','行名','列名','值'
get '表名','行名'
delete '表名','行名称','列名称'
8 见下图
 
//建表
create table net_info (device_number int,lac int,ci int,imei bigint,start_time timestamp,end_time timestamp,duration int,send_bytes int,recv_bytes int,total_bytes int)
row format delimited 
fields terminated by '|';
//加载数据
load data local inpath '/home/hadoop/text.txt' into table net_info;
select * from net_info;
//统计
select sum(total_bytes) from net_info where start_time>='2014-12-31' and end_time<'2015-1-1'
//顺便复习下修改列
alter table net_info change start_time start_time timestamp;
9 编写hive自定义函数实现oracle中addmonths函数功能,然后封装到hive函数库中。addmonths(data a,int b)函数功能简单说明:求传入日期a经过b月后的日期是多少?
 Hive可以允许用户编写自己定义的函数UDF,来在查询中使用。Hive中有3种UDF:
        1)UDF:操作单个数据行,产生单个数据行。
        2)UDAF:操作多个数据行,产生一个数据行。
        3)UDTF:操作一个数据行,产生多个数据行一个表作为输出。
        用户构建的UDF使用过程如下:
        第一步:继承UDF或者UDAF或者UDTF,实现特定的方法。
        第二步:将写好的类打包为jar。如hivefirst.jar。
        第三步:进入到Hive外壳环境中,利用add jar /home/hadoop/hivefirst.jar 注册该jar文件。
该例实现网上找了个作参考:
import org.apache.hadoop.hive.ql.exec.UDFArgumentException;
import org.apache.hadoop.hive.ql.exec.UDFArgumentLengthException;
import org.apache.hadoop.hive.ql.metadata.HiveException;
import org.apache.hadoop.hive.ql.udf.generic.GenericUDF;
import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorUtils;
import org.apache.hadoop.hive.serde2.objectinspector.primitive.IntObjectInspector;
import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory;
import org.apache.hadoop.hive.serde2.objectinspector.primitive.StringObjectInspector;
import org.joda.time.LocalDate;
import org.joda.time.format.DateTimeFormat;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;

public class AddMonth extends GenericUDF {

    @Override
    public ObjectInspector initialize(ObjectInspector[] arguments) throws UDFArgumentException {
        if (arguments.length != 2) {
            throw new UDFArgumentLengthException("The function add_month(local_date, months_to_add) requires 2 arguments.");
        }

        ObjectInspector localDateVal = arguments[0];
        ObjectInspector monthsToAddVal = arguments[1];

        if (!(localDateVal instanceof StringObjectInspector)) {
            throw new UDFArgumentException("First argument must be of type String (local_date as String)");
        }
        if (!(monthsToAddVal instanceof IntObjectInspector)) {
            throw new UDFArgumentException("Second argument must be of type int (Month to add)");
        }
        return PrimitiveObjectInspectorFactory.writableStringObjectInspector;
    }

    @Override
    public Object evaluate(DeferredObject[] arguments) throws HiveException {
        String localDateVal = (String) ObjectInspectorUtils.copyToStandardJavaObject(arguments[0].get(),
                PrimitiveObjectInspectorFactory.javaStringObjectInspector);
        IntWritable monthsToAddVal = (IntWritable) ObjectInspectorUtils.copyToStandardJavaObject(arguments[1].get(),
                PrimitiveObjectInspectorFactory.javaIntObjectInspector);

        LocalDate localDate = null;
        try {
            localDate = LocalDate.parse(localDateVal, DateTimeFormat.forPattern("yyyy-MM-dd"));
        } catch (Exception ex) {
            return null;
        }

        return new Text(localDate.plusMonths(monthsToAddVal.get().toString());
    }

    @Override
    public String getDisplayString(String[] arguments) {
        assert (arguments.length == 2);
        return "add_month(" + arguments[0] + ", " + arguments[1] + ")";
    }
}
10 利用spark编写搜索日志分析:用户在0点-12点的搜索量。搜索路径存放路径为/input/data.txt。文件用竖线分割,第一列为时间字段。日志内容如下:

© 著作权归作者所有

等待救赎
粉丝 6
博文 79
码字总数 35355
作品 0
程序员
私信 提问
bigdata hadoop 面试问题一

数据结构 1.栈和队列都是线性数据结构。 2. 栈(FIlO):只能在一端操作,即栈顶(如出栈、入栈),这种只能从一端操作的性质,意味着栈中的元素只能后进先出(先进后出)(last in first out...

八戒_o
2016/02/15
295
0
一文总结机器学习类面试问题与思路

机器学习、大数据相关岗位根据业务的不同,岗位职责大概分为: 一、平台搭建类 数据计算平台搭建,基础算法实现,当然,要求支持大样本量、高维度数据,所以可能还需要底层开发、并行计算、分...

技术小能手
2018/08/06
0
0
腾讯 || 2017实习生研发工程师及软件测试最新面经!

之前三月初的时候无意中收到深圳腾讯云的电话(对方表明身份后,说看到我的简历,想和我聊聊。当时没有电面经验再加上也没有进来也没有投简历,爽快的答应聊就聊呗。上来就是技术问题,当时蒙...

shareLin
2016/04/19
0
0
bigdata hadoop 面试问题二

补充: mapreduce 、hive. 为什么不用mapredeuce,用hive? 1.MapReduce is hard to program. 2.No Schema,lack of query lanaguager. eg.SQL 后面facebook 开源了一个hive的框架,它是基于had......

八戒_o
2016/02/19
909
0
RMDB与hadoop的实时整合

一、MySQL的Hadoop Applier 实现原理是:把hadoop作为MYSQL 的slave,实时把数据同步到hadoop,支持apache hadoop 通过分析MYSQL的binlog日志,在hdfs产生一个目录(同表名),所有的表记录都存...

cloud-coder
2014/03/21
3.3K
0

没有更多内容

加载失败,请刷新页面

加载更多

聊聊nacos的NacosDiscoveryAutoConfiguration

序 本文主要研究一下nacos的NacosDiscoveryAutoConfiguration NacosDiscoveryAutoConfiguration nacos-spring-boot-project/nacos-discovery-spring-boot-autoconfigure/src/main/java/com/a......

go4it
22分钟前
4
0
如何保证消息的顺序性?

面试题 如何保证消息的顺序性? 面试官心理分析 其实这个也是用 MQ 的时候必问的话题,第一看看你了不了解顺序这个事儿?第二看看你有没有办法保证消息是有顺序的?这是生产系统中常见的问题...

米兜
27分钟前
6
0
变量求解:RMT函数

1. RMT函数:计算贷款每月付款额 = PMT (贷款利率,付款限期,本金) 2.单变量求解: 数据选项卡----> 模拟分析------>单变量求解:单变量求解前必须先执行PMT函数...

东方墨天
28分钟前
2
2
网络安全市场需求

最近,网络安全技能差距的热门话题流传开来。技能差距经常被紧急讨论,可以看出它在实践中的作用是很大的。但信息安全是一门广泛的学科,所以在谈论“技能差距”时需要更具体。有专家表示,真...

linuxCool
48分钟前
3
0
饿了么快应用初体验

作者:饿了么 顾诚 为什么我们选择了快应用 在很长一段时间里,原生饿了么应用对于新用户来说体验成本略高,对于迫切想要点餐的老用户操作有点繁琐;而 Web 版的饿了么应用在体验、速度、功能...

前端老手
50分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部