2007提高。。。。。统计数组。。坑

本文介绍了一种高效的算法,用于处理大规模数据集中的自然数统计任务。该算法能够在限定时间内完成对大量重复自然数的统计,避免了超时问题,并显著提高了处理速度。

题目:

某次科研调查时得到了n个自然数,每个数均不超过1500000000(1.5*10^9)。已知不相同的数不超过10000个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺序输出统计结果。

数据范围:

40%的数据满足:1<=n<=1000
80%的数据满足:1<=n<=50000
100%的数据满足:1<=n<=200000,每个数均不超过1 500 000 000(1.5*109)


            看完数据范围就懵逼了····

            什么鬼数据,,,死大死大的,,

Time Limit Exceeded

#include<iostream>
#include<algorithm>
using namespace std;
const int maxn=233333;
int a[maxn]={},sum[maxn]={},shu[maxn];
int main()
{
    a[0]=0;
    int n,c=0,min,max,b=1;
    cin>>n;
    for(int i=1;i<=n;i++)
        cin>>a[i];
    sort(a+1,a+1+n);
    max=a[n];
    min=a[1];
    a[n+1]=0;
    for(int i=min;i<=max;i++)
    {
        int he=0;
        for(int j=b;j<=n;j++)
        {
            if(a[j]!=i)
                break;
            if(a[j]==i)
            {
                he++;
                sum[c]=he;
                shu[c]=i;
            }
            if(a[j]!=a[j+1])
            {
                c++;
                b=j+1;
                break;
            }
        }
    }
    for(int i=0;i<c;i++)
        cout<<shu[i]<<" "<<sum[i]<<endl;
    return 0;
}

好不容易想出来的,,,最后超时了。。心痛。。


但是,在聪明的我费尽心思之后终于想出了正确的代码!!!!

Accepted

#include<iostream>
#include<algorithm>
using namespace std;
const int maxn=233333;
int a[maxn]={},sum[maxn]={},shu[maxn],b[maxn]={};
int main()
{
    int n,c=0,d=0,he=0;
    cin>>n;
    for(int i=1;i<=n;i++)
        cin>>a[i];
    sort(a+1,a+1+n);
    for(int i=1;i<=n;i++)
    {
        if(a[i]!=b[d])
        {    
            d++;
            b[d]=a[i];
        }
    }
    d=1;
    for(int i=1;i<=n;i++)
    {
        if(a[i]==b[d])
        {
            he++;
            shu[d]=a[i];
            sum[d]=he;
        }
        if(a[i]!=a[i+1])
        {
            d++;
            he=0;
        }
    }
    for(int i=1;i<d;i++)
        cout<<shu[i]<<' '<<sum[i]<<endl;
    return 0;
}

为自己鼓掌!!!!!

啪啪啪啪啪啪啪啪啪啪啪啪啪啪啪啪啪啪啪啪

《Hadoop大据开发实战(慕课版)》核心考点及解释 一、Hadoop基础核心考点 1.据“5V”特征 - 考点:掌握大据的5个核心特征及含义。 - 解释:大量(Volume,据规模达PB/EB/ZB级)、高速性(Velocity,据增长和处理速度快,低延迟响应)、多样性(Variety,含结构化、半结构化、非结构化据)、价值(Value,价值密度低但商业价值高)、真实性(Veracity,据质量和准确性是决策基础)。 2. Hadoop核心组件与版本差异 - 考点:Hadoop 1.0与2.0的核心组件区别,Hadoop生态圈关键组件功能。 - 解释:Hadoop 1.0核心为HDFS(分布式存储)+MapReduce(分布式计算);2.0新增YARN(资源调度框架),解决1.0中NameNode和JobTracker单点故障问题。生态圈组件中,ZooKeeper负责分布式协调,Hive是据仓库工具,HBase是分布式据库,Flume用于日志采集,Sqoop实现据传输。 3. HDFS架构与原理 - 考点:HDFS的主从架构、据读写流程、核心角色功能。 - 解释:HDFS采用主从模式,NameNode(主节点)管理命名空间和元据,DataNode(从节点)存储据块,SecondaryNameNode定期合并元据镜像和编辑日志。据块默认128MB,副本默认3个;读取流程先从NameNode获取据块位置,再从DataNode读取;写入流程通过DataNode复制据块并确认。 二、Hadoop集群搭建考点 1. 集群部署模式 - 考点:单机模式、伪分布式模式、全分布式模式的区别与适用场景。 - 解释:单机模式默认,用于调试;伪分布式模式所有守护进程运行在单个节点,用于验证程序;全分布式模式守护进程分布在多台节点,是生产环境,主节点(Master)和从节点(Slave)分工明确。 2. 集群搭建关键步骤 - 考点:虚拟机配置、SSH免密登录、JDK与Hadoop环境配置、核心配置文件(core-site.xml、hdfs-site.xml等)。 - 解释:需配置主机名与IP映射、关闭防火墙;SSH免密登录通过公私钥实现集群节点间无密码访问;core-site.xml指定文件系统入口,hdfs-site.xml配置副本和元据存储目录,mapred-site.xml指定MapReduce运行框架为YARN。 三、MapReduce核心考点 1. MapReduce核心思想与流程 - 考点:“分而治之”思想,Map阶段与Reduce阶段的核心任务,Shuffle阶段作用。 - 解释:Map阶段将输入据切分并转换为键值对(K2,V2),Reduce阶段对相同键的价值聚合计算;Shuffle阶段连接Map和Reduce,负责据的分区、排序、合并,优化据传输效率。 2. MapReduce编程模型与案例 - 考点:Mapper与Reducer类的实现,WordCount案例原理,常见组件(InputFormat、OutputFormat、Partitioner)。 - 解释:Mapper重写map()方法实现据转换,Reducer重写reduce()方法实现聚合;WordCount通过Map统计单词为<单词,1>,Reduce累加相同单词计;InputFormat定义输入据格式(默认TextInputFormat按行读取),Partitioner决定据流向哪个Reduce任务。 3. 据倾斜解决方案 - 考点:据倾斜的原因与常用优化方法。 - 解释:据倾斜指大量据集中到单个分区,导致节点负载;解决方案包括自定义分区、重新设计Key、使用Combiner预聚合、增加Reduce任务等。 四、Hadoop生态圈组件考点 1. ZooKeeper - 考点:ZooKeeper的角色(Leader/Follower/Observer)、核心功能(分布式协调、命名服务、分布式锁)、HA模式原理。 - 解释:Leader负责事务调度和选举,Follower处理非事务请求并参与投票,Observer参与投票仅转发请求;通过ZAB算法实现据一致性,为Hadoop HA模式提供故障转移支持。 2. Hive - 考点:Hive据类型(基本/复杂类型)、内部表与外部表区别、HQL查询与函使用。 - 解释:内部表删除删除元据和真实据,外部表仅删除元据;复杂类型包括ARRAY(数组)、MAP(键值对)、STRUCT(结构体);HQL支持类SQL查询,可通过自定义UDF扩展功能。 3. HBase - 考点:HBase据模型(行键、列簇、单元格)、架构(HMaster/HRegionServer)、Shell操作与Java API。 - 解释:行键是唯一标识且有序,列簇是列的集合(创建表必须指定);HMaster管理表结构和负载衡,HRegionServer处理据读写;常用Shell操作包括创建表(create)、插入据(put)、查询据(scan/get)。 4. Flume与Sqoop - 考点:Flume的Agent组件(Source/Channel/Sink)、据流模型;Sqoop的import/export命令用法。 - 解释:Flume通过Source采集据,Channel缓存据,Sink输出据(支持HDFS、HBase等目的地);Sqoop import将关系型据库据导入Hadoop,export反之,底层通过MapReduce实现高效传输。 五、Hadoop 2.0新特性考点 1. YARN架构与工作流程 - 考点:YARN核心组件(ResourceManager/NodeManager/ApplicationMaster/Container)、资源调度流程。 - 解释:ResourceManager负责集群资源管理,NodeManager管理节点资源,ApplicationMaster为单个作业申请资源并监控任务;工作流程包括作业提交、资源申请、任务启动与监控、结果反馈。 2. Hadoop HA模式 - 考点:HDFS HA与YARN HA的实现原理,故障转移机制。 - 解释:HDFS HA通过两个NameNode(Active/Standby)实现高可用,借助ZooKeeper和JournalNode同步元据;YARN HA通过多个ResourceManager实现故障自动切换,确保集群持续服务。 六、综合项目考点 1. 电商精准营销项目流程 - 考点:据采集(Flume)、据清洗(MapReduce)、据分析(Hive)、据可视化(ECharts)的全流程整合。 - 解释:通过Flume采集用户行为日志,MapReduce清洗脏据,Hive构建据仓库进行多维度分析(用户、地域、浏览器维度),最终通过ECharts展示分析结果。 2. 组件整合应用 - 考点:Hadoop、Hive、HBase、Sqoop等组件的协同使用场景。 - 解释:例如通过Sqoop将MySQL业务据导入Hive进行离线分析,分析结果写入HBase支持实查询,Flume实采集日志补充据来源。 补充核心考点及解释 七、高级编程与优化考点 1. Hadoop序列化 - 考点:Writable接口作用,常用实现类(Text、IntWritable),自定义Writable类的实现。 - 解释:序列化是对象与字节流的转换,Hadoop通过Writable接口实现高效序列化(优于Java序列化);Text对应String,IntWritable对应int,自定义类需实现write()(序列化)和readFields()(反序列化)方法。 2. HDFS小文件处理 - 考点:小文件的危害(占用NameNode内存)与解决方案。 - 解释:小文件指小于HDFS块大小的文件,解决方案包括:①压缩小文件(使用Gzip/Bzip2等格式);②创建SequenceFile/MapFile,将多个小文件合并为大文件存储。 3. Hive性能优化 - 考点:Hive查询优化的常用策略。 - 解释:包括启用本地模式、并行执行、Map Join(小表加载到内存)、合理分区分桶、避免全表扫描、处理据倾斜等,核心是减少MapReduce任务据传输量。 4. HBase性能优化 - 考点:HBase表设计(行键、列簇)、API优化、配置优化。 - 解释:行键设计需遵循短长度、散列化、唯一性原则;列簇应尽量减少(相关性强的列放入同一列簇);API优化包括关闭自动刷新、批量读写、使用过滤器减少据返回量。 八、实操类核心考点 1. 集群运维命令 - 考点:Hadoop、ZooKeeper、Hive、HBase的启停命令、状态查看命令。 - 解释:①Hadoop:start-dfs.sh/stop-dfs.sh(启停HDFS)、start-yarn.sh/stop-yarn.sh(启停YARN);②ZooKeeper:zkServer.sh start/stop/status(集群启停与状态);③Hive:hive(启动CLI)、hiveserver2(启动服务);④HBase:start-hbase.sh/stop-hbase.sh(集群启停)、hbase shell(启动Shell)。 2. 据操作实操 - 考点:HDFS Shell命令(put/get/mkdir/ls)、Hive表操作(创建/加载据/查询)、HBase据读写(put/scan/get)。 - 解释:HDFS put上传本地文件到HDFS,get下载HDFS文件到本地;Hive通过load data加载据,insert into插入据;HBase put插入<行键,列簇:列,值>据,scan扫描表据。 3. MapReduce作业提交与运行 - 考点:将Java程序打包为Jar包,通过hadoop jar命令提交作业,查看运行结果。 - 解释:提交命令格式: hadoop jar Jar包路径 主类全路径 输入路径 输出路径 ;输出路径需存在,运行结果默认存储在输出路径的part-r-00000文件中。 九、理论理解类考点 1. 分布式系统核心概念 - 考点:分布式系统的特点(高可用、高扩展、容错性)、一致性模型。 - 解释:Hadoop生态圈组件为分布式系统,通过多节点部署实现高可用(避免单点故障)和高扩展(动态增减节点);通过据副本、故障转移等机制实现容错。 2. Hadoop与传统技术的区别 - 考点:Hadoop与传统关系型据库(MySQL/Oracle)的差异。 - 解释:Hadoop适用于海量据离线处理,支持非结构化据,可水平扩展;传统据库适用于结构化据实查询,垂直扩展为主,事务一致性强。 3. 关键技术原理辨析 - 考点:MapReduce与Spark的区别、HDFS与HBase的区别。 - 解释:MapReduce基于磁盘运算,适用于离线批处理;Spark基于内存运算,速度更快,支持实流处理;HDFS是分布式文件系统,适用于批量存储与读取;HBase是分布式据库,支持随机读写和实访问。 十、习题高频考点 1. 填空题核心考点 - 大据技术核心需求:据存储、据运算。 - Hadoop 2.0三大核心组件:HDFS、MapReduce、YARN。 - HDFS默认块大小:128MB,默认副本:3。 - Flume Agent核心组件:Source、Channel、Sink。 - Sqoop核心功能:据导入(import)、据导出(export)。 2. 简答题核心考点 - 简述HDFS的读写流程。 - 简述MapReduce的工作原理。 - 说明Hive内部表与外部表的区别。 - 简述ZooKeeper在Hadoop HA中的作用。 - 如何解决MapReduce中的据倾斜问题? 进阶拓展考点及解释 十一、Hadoop 2.0深度考点 1. YARN资源调度机制 - 考点:YARN的调度器类型(FIFO/容量调度器/公平调度器)、Container资源描述。 - 解释:FIFO调度器按提交顺序调度,适用于单用户;容量调度器划分队列,支持多用户资源隔离;公平调度器动态分配资源,确保各应用公平获得资源。Container是资源抽象,包含内存、CPU等资源描述及任务启动命令。 2. HDFS Federation(联邦) - 考点:HDFS Federation的核心作用与架构。 - 解释:解决HDFS 1.0中NameNode内存受限问题,允许部署多个NameNode,每个NameNode分管一部分目录,共享所有DataNode存储资源,实现命名空间的水平扩展。 3. 高可用(HA)核心组件 - 考点:HDFS HA中的JournalNode与DFSZKFailoverController(ZKFC)功能。 - 解释:JournalNode用于同步Active NameNode的编辑日志,确保Standby NameNode据一致;ZKFC监控NameNode状态,通过ZooKeeper实现故障自动转移,切换Active/Standby角色。 十二、生态圈组件进阶考点 1. Flume高级特性 - 考点:Flume拦截器(Timestamp/Host/Static)、通道选择器(Replicating/Multiplexing)、故障转移与负载衡。 - 解释:拦截器用于修改或添加Event的Header信息;Replicating将Event复制到所有Channel,Multiplexing根据Header值路由到指定Channel;故障转移通过Sink组优先级实现失败重试,负载衡分散据到多个Sink。 2. Hive据仓库设计 - 考点:Hive分区表与分桶表的设计与使用场景,据倾斜优化。 - 解释:分区表按指定列(如日期、地域)拆分据,减少查询扫描范围;分桶表按列哈希分区,优化Join查询效率。据倾斜优化可通过分桶、Map Join、倾斜键单独处理实现。 3. HBase过滤器与比较器 - 考点:HBase常用过滤器(RowFilter/ValueFilter/SingleColumnValueFilter)、比较器类型(BinaryComparator/RegexStringComparator)。 - 解释:过滤器用于服务端筛选据,减少网络传输;RowFilter按行键筛选,ValueFilter按值筛选;BinaryComparator按字节顺序比较,RegexStringComparator支持正则匹配。 4. Sqoop进阶用法 - 考点:Sqoop增量导入(append/incremental lastmodified)、Job定任务、据格式转换。 - 解释:增量导入仅导入新增据,append追加记录,lastmodified基于间戳更新;Sqoop Job可保存导入/导出配置,支持定执行;支持将据导入HDFS(文本/SequenceFile)、Hive表、HBase表。 十三、实战项目深度考点 1. 据采集与预处理流程 - 考点:日志采集(Flume+Log4j)、据清洗(MapReduce/Spark)、据集成(Sqoop)的完整链路。 - 解释:通过Log4j生成应用日志,Flume监控日志目录并采集到HDFS;MapReduce程序清洗脏据(缺失值、异常值处理);Sqoop同步关系型据库据到Hive,实现多源据集成。 2. 电商精准营销项目核心模块 - 考点:用户画像构建(基于Hive分析用户行为)、地域/浏览器维度分析、据可视化实现(ECharts)。 - 解释:通过Hive分析用户浏览、下单据,提取用户偏好特征;按地域、浏览器维度统计访问量和转化率;ECharts读取分析结果,生成柱状图、饼图等可视化报表。 3. 组件整合故障排查 - 考点:集群启动失败、据传输异常、作业运行报错的常见原因与解决方案。 - 解释:如Hadoop启动失败可能是配置文件错误或端口占用;Sqoop导入失败可能是据库连接参错误或权限足;MapReduce作业报错可能是据格式匹配或资源足,需通过日志定位问题。 十四、职业应用考点 1. Hadoop就业技能要求 - 考点:大据开发工程师必备技能(Java基础、Hadoop集群搭建、生态圈组件使用、项目实战经验)。 - 解释:需熟练掌握Java编程、Linux命令、Hadoop核心组件配置与开发,熟悉Hive/HBase/Flume/Sqoop的实操,具备离线据处理项目经验(如日志分析、报表统计)。 2. 生产环境优化策略 - 考点:Hadoop集群在生产环境中的性能优化(资源配置、存储优化、作业调度)。 - 解释:资源配置需根据服务器硬件调整JVM内存、Map/Reduce任务;存储优化包括合并小文件、据压缩;作业调度通过YARN配置队列优先级,避免资源抢占。 十五、高频易错考点辨析 1. 概念混淆点 - HDFS块与传统文件系统块:HDFS块更大(默认128MB),目的是减少寻址间;传统文件系统块较小(如4KB),目的是提高存储利用率。 - MapReduce的Map与Reduce任务:Map任务由输入文件分片决定,Reduce任务可手动配置(默认1),并非越多越好。 - Hive与HBase的适用场景:Hive适用于离线据分析(如报表生成),HBase适用于实据查询(如用户画像查询)。 2. 实操易错点 - Hadoop集群格式化:仅初次启动前执行 hdfs namenode -format ,重复执行会导致据丢失。 - Hive外部表据加载: load data inpath 命令对外部表仅移动元据,移动真实据;内部表会移动真实据。 - HBase表操作:删除表前需先禁用表( disable &#39;表名&#39; ),否则报错;行键可修改,只能通过覆盖实现更新。 终极拓展考点及解释(含冷门高频考点) 十六、底层原理深挖考点 1. MapReduce Shuffle阶段深度解析 - 考点:Shuffle阶段的Map端与Reduce端流程、排序与合并机制。 - 解释:Map端将输出据写入环形缓冲区(默认100MB,80%阈值溢写),溢写前按分区和Key排序,多个溢写文件合并为一个;Reduce端通过HTTP拉取Map端据,合并后按Key分组,为Reduce任务提供输入。Shuffle是MapReduce性能瓶颈,优化重点包括调整缓冲区大小、压缩溢写文件、合理设置合并阈值。 2. HDFS元据管理 - 考点:NameNode的fsimage与edits文件作用,SecondaryNameNode的合并机制。 - 解释:fsimage是元据快照(文件系统目录树),edits记录元据变更日志;SecondaryNameNode定期(默认1)合并fsimage和edits,生成新fsimage,减少NameNode重启的加载间。HA模式下,通过JournalNode同步edits文件,确保Active与Standby NameNode据一致。 3. ZooKeeper据模型与Watcher机制 - 考点:ZooKeeper的Znode节点类型(永久/临/顺序节点)、Watcher监听机制。 - 解释:永久节点创建后持续存在,临节点随客户端会话结束删除,顺序节点自动附加序列号;Watcher机制支持客户端监听Znode变更(创建/删除/据修改),触发后通知客户端,常用于分布式锁、服务发现等场景。 十七、冷门但高频考点 1. Hadoop序列化与Java序列化的区别 - 考点:Hadoop自定义序列化(Writable)的优势。 - 解释:Java序列化开销大、序列化后据体积大、支持引用机制(无法分割大文件);Hadoop Writable序列化更简洁、高效,据体积小,无引用机制,适配分布式计算场景,如IntWritable仅存储int值,无额外开销。 2. Flume的可靠性保证 - 考点:Flume的事务机制(Source与Sink事务)、File Channel与Memory Channel的可靠性差异。 - 解释:Source事务确保据从外部来源读取后写入Channel,Sink事务确保据从Channel读取后写入目的地;File Channel将据持久化到磁盘,故障后丢失;Memory Channel据存储在内存,速度快但故障后据丢失,适用于对可靠性要求高的场景。 3. Hive的SerDe序列化/反序列化 - 考点:SerDe的作用,常见SerDe类型(LazySimpleSerDe、JsonSerDe)。 - 解释:SerDe负责Hive据的序列化(写入据转为存储格式)与反序列化(读取将存储格式转为查询格式);默认LazySimpleSerDe处理文本格式据,JsonSerDe支持JSON格式据的解析。 4. HBase的预写日志(WAL) - 考点:HBase WAL的作用与原理。 - 解释:WAL(Write-Ahead-Log)是HRegionServer的日志文件,据写入MemStore前先写入WAL,防止MemStore据因节点故障丢失;节点恢复,通过WAL回放未持久化的据到HFile。 十八、跨组件交互考点 1. Hive与HBase的集成 - 考点:Hive关联HBase表的配置与使用场景。 - 解释:通过创建Hive外部表,指定 STORED BY &#39;org.apache.hadoop.hive.hbase.HBaseStorageHandler&#39; ,映射HBase的行键、列簇和列;适用于需通过HQL查询HBase中实据的场景,底层通过HBase API读取据。 2. Spark与Hadoop的协同 - 考点:Spark与Hadoop的适配(依赖HDFS存储、YARN资源调度)、Spark相比MapReduce的优势。 - 解释:Spark可读取HDFS中的据,提交作业到YARN集群运行;相比MapReduce,Spark基于内存计算,避免磁盘I/O开销,支持迭代计算和流处理,速度提升10~100倍。 3. Flume与Kafka的整合 - 考点:Flume作为Kafka生产者的配置,据传输流程。 - 解释:将Flume的Sink类型配置为Kafka Sink,指定Kafka集群地址、主题;Flume采集日志据后,发送到Kafka主题,实现据的缓冲与解耦,供下游Spark Streaming、Flink等组件消费。 十九、生产环境问题排查考点 1. Hadoop集群常见故障 - 考点:NameNode单点故障、DataNode据块损坏、YARN资源足的解决方案。 - 解释:NameNode故障通过HA模式的Standby节点切换恢复;DataNode据块损坏通过副本自动修复(NameNode检测到损坏后复制其他副本);YARN资源足需调整 yarn-site.xml 中的内存、CPU配置,或优化作业资源请求。 2. Hive查询性能低下排查 - 考点:Hive查询慢的常见原因(全表扫描、据倾斜、小文件过多)。 - 解释:全表扫描需添加分区过滤或索引;据倾斜可通过 set hive.optimize.skewjoin=true 优化;小文件过多需通过 set hive.merge.mapfiles=true 合并小文件。 3. HBase读写延迟高 - 考点:HBase延迟高的优化方向(行键设计、MemStore大小、Region拆分)。 - 解释:行键设计合理导致热点访问,需重构行键(如加盐、哈希);MemStore过小导致频繁溢写,需调整 hbase.hregion.memstore.flush.size ;Region过大导致拆分耗,需合理设置 hbase.hregion.max.filesize 。 二十、终极综合考点(面试高频) 1.据处理完整链路设计 - 考点:从据采集到据输出的全流程设计(含组件选型、架构设计)。 - 示例:日志据→Flume采集→Kafka缓冲→Spark Streaming实处理→HBase存储(实查询);业务据→Sqoop导入→Hive据仓库→MapReduce离线分析→MySQL导出(业务辅助)。 2. 技术选型对比分析 - 考点:根据业务场景选择合适的组件(如实vs离线、结构化vs非结构化据)。 - 示例:实日志处理选Flume+Kafka+Spark Streaming;离线报表分析选Sqoop+Hive+MapReduce;实查询选HBase;全文检索选ElasticSearch。 3.据安全考点 - 考点:Hadoop集群安全(Kerberos认证)、据权限控制(HDFS ACL、Hive权限)。 - 解释:Kerberos为集群节点和用户提供身份认证,防止未授权访问;HDFS ACL控制文件读写权限,Hive通过角色(Role)和权限(Select/Insert)控制据表访问。 二十一、必背核心命令汇总(实操必考) 1. HDFS核心命令 - 上传文件: hdfs dfs -put 本地文件 HDFS路径  - 下载文件: hdfs dfs -get HDFS文件 本地路径  - 查看文件: hdfs dfs -cat HDFS文件  - 创建目录: hdfs dfs -mkdir -p HDFS目录  - 删除文件/目录: hdfs dfs -rm -r HDFS路径  2. MapReduce作业命令 - 提交作业: hadoop jar Jar包路径 主类全路径 输入路径 输出路径  - 查看作业状态: yarn application -list  - 杀死作业: yarn application -kill 作业ID  3. Hive核心命令 - 创建据库: create database 据库名;  - 创建表: create table 表名(列名 类型,...) row format delimited fields terminated by &#39;\t&#39;;  - 加载据: load data local inpath &#39;本地路径&#39; into table 表名;  - 查询据: select * from 表名 where 条件;  4. HBase核心命令 - 创建表: create &#39;表名&#39;,&#39;列簇1&#39;,&#39;列簇2&#39;;  - 插入据: put &#39;表名&#39;,&#39;行键&#39;,&#39;列簇:列&#39;,&#39;值&#39;;  - 扫描表: scan &#39;表名&#39;;  - 删除表: disable &#39;表名&#39;; drop &#39;表名&#39;;  5. Sqoop核心命令 - 导入MySQL据到HDFS: sqoop import --connect jdbc:mysql://IP:3306/据库名 --username 用户名 --password 密码 --table 表名 --target-dir HDFS路径 --m 1  - 导出HDFS据到MySQL: sqoop export --connect jdbc:mysql://IP:3306/据库名 --username 用户名 --password 密码 --table 表名 --export-dir HDFS路径 --input-fields-terminated-by &#39;\t&#39; 终极补充考点及实战易错点(含面试深度问答) 二十二、底层协议与通信考点 1. Hadoop RPC通信机制 - 考点:RPC的概念、Hadoop RPC架构(Client/Server/Interface)、核心作用。 - 解释:RPC(远程过程调用)是Hadoop节点间通信的核心协议,屏蔽底层网络细节;Hadoop RPC架构包含客户端(发起请求)、服务器端(提供服务)、接口(定义服务方法);用于NameNode与DataNode、ResourceManager与NodeManager等组件间的通信。 2. HDFS WebHDFS协议 - 考点:WebHDFS的作用、核心操作(文件读写、目录管理)。 - 解释:WebHDFS提供HTTP接口,支持通过浏览器或REST API操作HDFS,无需部署Hadoop客户端;核心操作包括创建文件(PUT)、读取文件(GET)、创建目录(MKCOL)等,适用于跨平台据访问。 二十三、据格式与压缩考点 1. Hadoop支持的据压缩格式 - 考点:常用压缩格式(Gzip/Bzip2/Snappy/LZO)的特点、适用场景。 - 解释:Gzip压缩比高,支持切分;Bzip2支持切分,压缩比最高但速度慢;Snappy速度快,压缩比适中,支持切分;LZO支持切分(需加索引),速度快,适用于大据实处理场景。 2. 序列化据格式(SequenceFile/MapFile/ORC/Parquet) - 考点:各序列化格式的优势与适用场景。 - 解释:SequenceFile存储键值对,适用于合并小文件;MapFile是排序的SequenceFile,支持随机查询;ORC和Parquet是列存储格式,压缩比高,查询仅读取需要的列,适用于Hive据仓库场景。 二十四、实战面试高频问答考点 1. 如何设计一个高可用的Hadoop集群? - 考点:HA模式配置、组件冗余、故障转移机制。 - 标准答案:①HDFS HA:部署两个NameNode(Active/Standby),通过JournalNode同步元据,ZKFC实现故障转移;②YARN HA:部署多个ResourceManager,通过ZooKeeper实现Active切换;③组件冗余:DataNode、NodeManager多节点部署,ZooKeeper集群(奇节点)确保高可用;④据备份:HDFS副本设为3,关键据定期备份到异地。 2.据项目中如何处理实与离线据? - 考点:实与离线据处理的组件选型、流程设计。 - 标准答案:①实据:Flume采集日志→Kafka缓冲→Spark Streaming/Flink处理→HBase/Redis存储,支持低延迟查询;②离线据:Sqoop导入关系型据库据→Hive据仓库→MapReduce/Spark批处理→MySQL导出报表;③据融合:实处理结果定期同步到离线仓库,离线分析结果为实处理提供规则支持。 3. 如何解决Hive据倾斜问题? - 考点:据倾斜的根源、分层解决方案。 - 标准答案:①根源:某类Key的据量远超其他Key,导致单个Reduce任务负载过高;②解决方案:a. 预处理:通过Map Join将小表加载到内存,避免Reduce阶段倾斜;b. 键值优化:对倾斜Key加盐(添加随机前缀),分散到多个Reduce;c.调优: set hive.optimize.skewjoin=true (自动识别倾斜Key)、 set hive.skewjoin.key=100000 (定义倾斜阈值);d. 据拆分:将倾斜Key单独处理,再与其他据合并。 4. HBase的Region拆分与合并机制 - 考点:Region拆分触发条件、合并类型(Minor/Major)。 - 标准答案:①拆分触发条件:Region大小达到阈值(默认256MB)、Region中StoreFile量达到阈值;②拆分方式:按行键范围等拆分,拆分后的据分布到同RegionServer;③合并类型:Minor合并(合并小StoreFile,删除过期据)、Major合并(合并所有StoreFile,删除过期据和删除标记),Major合并耗资源,需避开业务高峰期。 二十五、生产环境优化深度考点 1. Hadoop集群资源配置优化 - 考点:YARN内存配置、Map/Reduce任务资源分配、磁盘规划。 - 解释:①YARN内存配置: yarn.nodemanager.resource.memory-mb 设置节点可用内存, yarn.scheduler.minimum-allocation-mb 设置容器最小内存;②Map/Reduce资源: mapreduce.map.memory.mb (Map任务内存)、 mapreduce.reduce.memory.mb (Reduce任务内存),根据服务器硬件(如32GB内存节点,可分配24GB给YARN);③磁盘规划:DataNode使用多块磁盘存储据,避免单块磁盘IO瓶颈。 2. Hive SQL优化实战技巧 - 考点:查询语句优化、索引使用、分区剪裁。 - 解释:①避免 select * ,仅查询需要的列;②使用分区剪裁( where dt=&#39;2024-01-01&#39; ),减少扫描据量;③对频繁查询的列创建索引(Hive 3.0+支持BTREE索引);④用 union all 替代 union (避免去重开销);⑤子查询优化,将子查询转换为JOIN操作。 3. HBase写入性能优化 - 考点:批量写入、预分区、MemStore配置。 - 解释:①批量写入:使用 putList 批量提交据,减少RPC调用次;②预分区:创建表指定分区范围(如按行键前缀分区),避免Region热点和频繁拆分;③MemStore配置:增大 hbase.hregion.memstore.flush.size (如256MB),减少溢写次;④关闭WAL( setWriteToWAL(false) ),适用于非核心据(牺牲可靠性换速度)。 二十六、实战易错点与避指南 1. 集群搭建易错点 - 1:克隆虚拟机后未修改MAC地址和IP,导致网络冲突。 - 解决方案:修改 /etc/udev/rules.d/70-persistent-net.rules 删除多余网卡,修改 /etc/sysconfig/network-scripts/ifcfg-eth0 中的IP和MAC地址。 - 点2:Hadoop配置文件中主机名写错,导致组件无法通信。 - 解决方案:确保 core-site.xml 、 hdfs-site.xml 等文件中的主机名与 /etc/hosts 中的映射一致,通过 ping 主机名 验证连通性。 2. 作业运行易错点 - 1:MapReduce作业输出路径已存在,导致作业失败。 - 解决方案:运行前删除输出路径( hdfs dfs -rm -r 输出路径 ),或在代码中添加路径判断逻辑。 - 点2:Hive加载,文件分隔符与表定义一致,导致据错乱。 - 解决方案:创建表明确指定分隔符( fields terminated by &#39;\t&#39; 、 collection items terminated by &#39;,&#39; ),确保据文件分隔符匹配。 3. 据迁移易错点 - 1:Sqoop导入MySQL,字段类型匹配(如MySQL datetime vs Hive string)。 - 解决方案:在Sqoop命令中使用 --map-column-java 或 --map-column-hive 指定字段类型映射。 - 点2:Flume采集日志,中文乱码。 - 解决方案:在Flume配置文件中设置编码( agent.sources.r1.charset=UTF-8 ),确保日志文件编码与配置一致。 二十七、终极总结:大据开发核心能力模型 1. 技术栈核心能力 - 基础能力:Java编程、Linux命令、SQL语法、分布式系统概念。 - 核心组件:Hadoop(HDFS/MapReduce/YARN)、ZooKeeper、Hive、HBase、Flume、Sqoop。 - 进阶能力:Spark/Flink实处理、据仓库设计、性能优化、故障排查。 2. 项目实战能力 - 据链路设计:从采集→预处理→存储→分析→可视化的全流程设计。 - 组件整合能力:Flume+Kafka+Spark、Hive+HBase、Sqoop+MySQL等跨组件协同。 - 问题解决能力:集群故障排查、据倾斜处理、性能瓶颈优化。 二十八、必背核心配置参(实操必考) 1. HDFS核心配置 -  dfs.replication :据块副本(默认3)。 -  dfs.namenode.name.dir :NameNode元据存储目录。 -  dfs.datanode.data.dir :DataNode据块存储目录。 -  dfs.blocksize :HDFS据块大小(默认128MB)。 2. YARN核心配置 -  yarn.resourcemanager.hostname :ResourceManager主机名。 -  yarn.nodemanager.aux-services :NodeManager附属服务(默认 mapreduce_shuffle )。 -  yarn.scheduler.minimum-allocation-mb :容器最小内存(默认1024MB)。 -  yarn.scheduler.maximum-allocation-mb :容器最大内存(默认8192MB)。 3. Hive核心配置 -  hive.metastore.uris :Metastore服务地址(远程模式配置)。 -  hive.exec.mode.local.auto :自动启用本地模式(默认false)。 -  hive.optimize.skewjoin :启用据倾斜优化(默认false)。 -  hive.exec.dynamic.partition.mode :动态分区模式(默认strict,非严格模式设为nonstrict)。 4. HBase核心配置 -  hbase.rootdir :HBase据存储目录(默认HDFS路径)。 -  hbase.zookeeper.quorum :ZooKeeper集群地址。 -  hbase.hregion.memstore.flush.size :MemStore刷新阈值(默认128MB)。 -  hbase.hregion.max.filesize :Region拆分阈值(默认256MB)。帮我根据知识点出一张期末试卷选择1010个填空20分10个判断1010个综合分析20分程序题20分应用题20分。
最新发布
01-04
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值