Hadoop知识点问题总结

1.简单描述你对Hadoop集群SafeMode模式的理解?

         集群处于安全模式,不能执行重要操作(写操作),集群属于只读状态;但严格来说,只 是保证HDFS元数据信息的访问,而不保证文件的访问;集群启动完成后,自动退出安     全模式,如果集群处于安全模式,想要完成写操作,需要离开安全模式

         查看安全模式状态:bin/hdfs dfsadmin -safemode get

         进入安全模式状态:bin/hdfs dfsadmin -safemode enter

         离开安全模式状态:bin/hdfs dfsadmin -safemode leave

         等待安全模式状态:bin/hdfs dfsadmin -safemode wait

         对全新创建的HDFS集群,NameNode启动后不会进入安全模式,因为没有Block信息

 

2.hadoop集群中如何设置黑名单和白名单?作用分别是什么?

         添加到白名单的主机节点,都允许访问NameNode,不在白名单的主机节点,会被退出

         创建white.hosts文件:文件中添加的主机名为白名单

         在hdfs-site.xml配置文件中增加white.hosts属性,并分发文件

         在黑名单上面的主机都会被强制退出

         创建black.hosts文件:文件中添加的主机名为黑名单

         在hdfs-site.xml配置文件中增加black.hosts属性,并分发文件

        

3.是否可以在Windows上运行Hadoop?

         不能

 

4.在MapReduce处理任务时,简单描述经过哪节基本流程?

         第一个阶段的MapTask并发实例,完全并行运行,互不相干

         第二个阶段的ReduceTask并发实例互不相干,但是他们的数据依赖于上一个阶段的所    有MapTask并发实例的输出

         MapReduce编程模型只能包含一个Map阶段和一个Reduce阶段,如果用户的业务逻辑 非常复杂,那就只能多个MapReduce程序,串行运行

 

5.简答描述以下TextInputFormat怎么进行文件切分?

         拿到文件之后,默认情况下切片的切块大小是块大小128M,如果文件大于128M,那    就看文件是否大于128 M的1.1倍(140.8M),如果不大于就不切分,如果大于,就按照 128M大小进行切分

        

6.假如Namenode中没有数据会怎么样?

         将SecondaryNameNode中数据拷贝到NameNode存储数据的目录

         使用-importCheckpoint选项启动NameNode守护进程,从而将SecondaryNameNode中     数据拷贝到NameNode目录中

 

7.如何实现服务器之间的免密登录(便捷版),SSH采用的是什么加密?

         生成公钥和私钥:ssh-keygen -t rsa

         将公钥拷贝到要免密登录的目标机器上

         SSH采用的是非对称加密

 

8.简单描述MapReduce不合适对哪些场景的使用,其实问得就是他得缺点?

         MapReduce的缺点:不擅长实时计算,不擅长流式计算,不擅长DAG(有向图)计算

 

9.MapReduce的基本数据类型包括哪些?

         BooleanWritable、ByteWritable、IntWritable、FloatWritable、LongWritable、DoubleWritable、         TextWritable、MapWritable、ArrayWritable

 

10.yarn有哪几部分组成,作用分别是什么?调度器主要有哪三种,hadoop默认的是哪一种?

         由ResourceManager、NodeManager、ApplicationMaster和Container等组件构成;

         ResourceManager:处理客户端请求、监控NodeManager、启动或监控ApplicationMaster、       资源的分配与调度

         NodeManager:管理单个节点上的资源、处理来自ResourceManager的命令、处理来自    ApplicationMaster的命令

         ApplicationMaster:负责数据的切分、为应用程序申请资源并分配给内部的任务、任务的 监控与容错

         Container:Container是YARN中的资源抽象,它封装了某个节点上的多维度资源,如内    存、CPU、磁盘、网络等。

         FIFO、Capacity Scheduler(容量调度器)和Fair Scheduler(公平调度器)

         Hadoop默认的资源调度器是Capacity Scheduler(容量调度器)

 

11.如果需要在namenode节点群起集群,你需要如何配置?

         必须实现服务器之间的免密登录

         修改hadoop2.7.2文件夹下的etc/hadoop/slaves文件

        

12.简单描述Shuffle过程环形缓冲区的作用?

         Key、value从map()方法输出,被outputcollector收集通过getpartitioner()方法获取分区  号,在进入环形缓冲区。默认情况下,环形缓冲区大小值为100M。当map输入的数据      进入环形缓冲区的量达到80MB以上时,开始执行溢写过程,溢写过程中如果有其他数         据进入,由剩余的20%反向写入。溢写过程会根据key、value先进行分区,之后进行排 序,最终maptask溢写文件经过归并排序后落入本地磁盘,reduceTask将多个mapTask       下相同分区的数据copy到不同的reduceTask中进行归并排序后一次读取一组数据给 reduce()函数

 

13.Mapreduce执行过程中,在执行Reduce Task之前主要做哪些工作?

         计算MapTask数量,文件的切分,向环形区写入数据,之后对文件进行分区快排,溢    出到文件(分区且区内有序),之后进行归并排序

 

14.hdfs-site.xml的3个主要属性?

         指定HDFS副本数量:dfs.replication

         指定SecondaryNameNode:dfs.namenode.secondary.http-address

         指定DataNode:dfs.datanode.address

 

15.Hadoop完全分布式模式有什么注意点?

         设计集群:将namenode、datanode、resourcemanager、nodemanager、historyserver       放在不同服务器上

         设置namenode节点所在的服务器地址和临时文件的存储目录(core-site.xml)

         配置文件的副本数(hdfs-site.xml)

         配置mapred-site.xml和yarn-site.xml

         集群中的其他节点和hadoop01上的配置保持一致

        

16.Hadoop集群可以运行的3个模式?

本地运行模式、伪分布式运行模式和完全分布式运行模式

 

17.用一句话总结Combiner的作用和意义?并说明使用它的前提?

         Combiner的意义就是对每一个MapTask的输出进行局部汇总,以减小网络传输量

 

18.用shell脚本完成如下功能,求极值,根据输入数据,输出最大,最小值(达到手写的程度)

         #!/bin/bash

         min=$1

         max=$1

         for i in "$@"

         do

                  if [ $min -gt $i ]

                  then

                           min=$i

                  fi

                  if [ $max -lt $i ]

                  then

                            max=$i

                  fi

         done

         echo "最大值为" $max

         echo "最小值为" $min

        

19.编写一个最基本的wordcount单词统计的mapreduce(达到手写的程度,可以参照上课的代码样例)

         public class WcMapper extends Mapper<LongWritable, Text, Text, IntWritable> {

             private Text keyText = new Text();

             private IntWritable one = new IntWritable(1);

             @Override

             protected void map(LongWritable key, Text value, Context context) throws IOException,           InterruptedException {

                 String line = value.toString();

                 String [] fileds = line.split(" ");

                 for (String filed : fileds) {

                     keyText.set(filed);

                     context.write(keyText, one);

                 }

             }

         }

         public class WcReducer extends Reducer<Text, IntWritable, Text, IntWritable> {

             private IntWritable total = new IntWritable();

             @Override

             protected void reduce(Text key, Iterable<IntWritable> values, Context context) throws             IOException, InterruptedException {

                 int sum = 0;

                 for (IntWritable value : values) {

                     sum += value.get();

                 }

                 total.set(sum);

                 context.write(key, total);

             }

         }

         public class WcDriver {

             public static void main(String[] args) throws IOException, ClassNotFoundException,                    InterruptedException {

                 Job job = Job.getInstance(new Configuration());

                 job.setJarByClass(WcDriver.class);

                 job.setMapperClass(WcMapper.class);

                 job.setReducerClass(WcReducer.class);

                 job.setMapOutputKeyClass(Text.class);

                 job.setMapOutputValueClass(IntWritable.class);

                 job.setOutputKeyClass(Text.class);

                 job.setOutputValueClass(IntWritable.class);

                 FileInputFormat.setInputPaths(job, new Path(args[0]));

                 FileOutputFormat.setOutputPath(job, new Path(args[1]));

                 boolean b = job.waitForCompletion(true);

                 System.exit(b ? 0 : 1);

             }

         }

 

20.列出常用的hdfs 命令(至少10个,并说明命令的作用)

         本地文件àHDFS:

    -put:将本地数据上传至hdfs

    -copyFromLocal:将本地文件数据拷贝到hdfs

    -moveFromLocal:将本地文件数据移动到hdfs,成功后本地数据会删除

    -appendToFile:追加一个文件到已经存在的文件末尾

         HDFS与HDFS之间:

    -ls:查看hdfs文件目录

    -mkdir:在HDFS上创建目录

    -rm:删除文件或者文件夹

    -rmr:递归删除

    -cp:从一个目录拷贝文件至另一目录

    -mv:在HDFS目录中移动文件

    -chown:修改文件所属用户权限

    -chmod:修改文件所属读写权限

    -du -h:文件夹暂用的空间大小

    -df -h:查看系统分区情况

    -cat:查看文件

         HFDSà本地:

    -get:从hdfs下载文件至本地

    -getmerge:合并hdfs目录下的文件至本地

-copyToLocal:从hdfs拷贝文件至本地

 

21.列出常用的10个linux命令,并说明它们的作用

         查看当前网络IP:ifconfig

         修改IP地址:vim /etc/ssconfig/network-scripts/ifcfg-eth0

         启动防火墙:servicer network start

         关闭iptables服务的自启动:chkconfig iptables off

         创建空文件:touch 文件名

         添加新用户:useradd 用户名

         显示登陆用户的用户名:who am i

         改变权限:chmod 421 文件或目录

         查看系统中的所有进程:ps -aux

         查询所安装的rpm软件包:rpm -qa | grep rpm软件包

猜你喜欢

转载自blog.csdn.net/Poolweet_/article/details/103809280
今日推荐