大数据面试题(相关知识点罗列)

这篇博客汇总了大数据面试的相关知识点,包括Linux命令、MR、Hive、Spark的词频统计,Hadoop介绍、端口、ETL过程,Hadoop集群搭建、优化,Yarn的Job提交流程、调度器,HDFS读写流程,MapReduce的Shuffle过程,HBase的RowKey设计和优化等内容。还涵盖了Scala的函数式编程概念,如匿名函数、高阶函数、闭包等。此外,还讨论了Spark与MapReduce的区别、运行模式及提交流程。
摘要由CSDN通过智能技术生成

自述:这篇可能也不完全是 面试题,就是一些知识点的整理。【持续更新中…】

【愿君一路披荆斩棘,觅得心仪大offer】

1、linux的常用的命令:

(1)磁盘管理:
pwd:显示工作目录的绝对路径名称
ls:显示指定工作目录下的内容(列出目前工作目录所含之文件及子目录)
mkdir:用于创建目录
rmdir:删除空的目录
cd:用于切换当前工作目录
(2)文件管理:
touch:用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件
cp:用于复制文件或目录
rm:删除一个文件或者目录
mv:为文件或目录改名、或将文件或目录移入其它位置
cat:连接文件并打印到标准输出设备上
more:类似 cat ,不过会以一页一页的形式显示
less:与 more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件
chmod:控制用户对文件的权限的命令
chown:用于设置文件所有者和文件关联组的命令
chgrp:用于变更文件或目录的所属群组。(与 chown 命令不同,chgrp 允许普通用户改变文件所属的组,只要该用户是该组的一员)
(3)系统管理:
useradd:用来建立用户帐号。帐号建好之后,再用 passwd 设定帐号的密码。而可用 userdel 删除帐号。使用 useradd 指令所建立的帐号,实际上是保存在 /etc/passwd 文本文件中
passwd:用来更改使用者的密码
su:用于变更为其他使用者的身份,除 root 外,需要键入该使用者的密码。(使用权限:所有使用者。)
sudo:以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行。(使用权限:在 /etc/sudoers 中有出现的使用者。)
userdel:用于删除用户帐号
who:用于显示系统中有哪些使用者正在上面,显示的资料包含了使用者 ID、使用的终端机、从哪边连上来的、上线时间、呆滞时间、CPU 使用量、动作等等。(使用权限:所有使用者都可使用。)
(4)其他命令:
head:用于查看文件的开头部分的内容,有一个常用的参数 -n 用于显示行数,默认为 10,即显示 10 行的内容
tail:用于查看文件的内容,有一个常用的参数 -f 常用于查阅正在改变的日志文件

【详细内容可参考 菜鸟教程的 linux命令大全:https://www.runoob.com/linux/linux-command-manual.html

2、MR、Hive、Spark的词频统计
(1)MR的词频统计:
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.NullWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import java.io.IOException;

public class WordCount {
   

    public static void main(String[] args) throws Exception {
   
        //获取job对象
        //1.新创建配置文件
        Configuration conf = new Configuration();
        conf.set("mapreduce.framework.name","local");
        conf.set("fs.defaultFS","file:///");    //本地模式
      // conf.set("fs.defaultFS", "hdfs://192.168.137.71:8020");    //集群模式

        Job job = Job.getInstance(conf);
        //2.指定驱动类进行打包
        job.setJarByClass(WordCount.class);

        //3.指定Mapper,reducer类
        job.setMapperClass(wcMapper.class);
        job.setReducerClass(wcReducer.class);

        //4.指定mapper输出的数据类型
        job.setMapOutputKeyClass(Text.class);
        job.setMapOutputValueClass(LongWritable.class);

        //5.指定reduce输出的数据类型
        job.setOutputKeyClass(NullWritable.class);
        job.setOutputValueClass(Text.class);

        //6.指定输入的数据路径
        FileInputFormat.setInputPaths(job,new Path("D:\\Test\\spark\\words.txt"));
        FileOutputFormat.setOutputPath(job,new Path("D:\\Test\\1"));

        //8.提交任务并退出
        boolean b = job.waitForCompletion(true);
        System.exit(b?0:1);

    }
}

class wcMapper extends Mapper<LongWritable,Text,Text, LongWritable>{
   

    @Override
    protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
   
        String[] splits = value.toString().split(" ");
        for (String s : splits) {
   
            context.write(new Text(s),new LongWritable(1L));
        }

    }
}

class wcReducer extends Reducer<Text, LongWritable, NullWritable, Text>{
   
    @Override
    protected void reduce(Text key, Iterable<LongWritable> values, Context context) throws IOException, InterruptedException {
   
        long l=0L;
        for (LongWritable value : values) {
   
            l++
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值