这篇文章将为大家详细讲解有关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是怎样运行的
不确定是不是回答这个图
hive处理数据量较大,高延迟,基于hdfs,hql转换成mr执行,不支持数据修改 oracle处理数据量相对较小,有所有,低延迟,支持数据修改
create '表名称','列族名称1','列名族称2','列名族称N' put '表名','行名','列名','值' get '表名','行名' delete '表名','行名称','列名称'
//建表 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;
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] + ")"; } }
关于“Hadoop常见面试题有哪些”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。