大数据

1.搭建hadoop集群步骤

(1)准备工作:上传并解压hadoop安装包,配置环境变量,ssh免密登录

(2)修改配置文件:hadoop-env.sh,core-site.xml,hdfs-site.xml,mapre-site.xml

(3)分发hadoop目录到各机器

(4)hadoop namenode -format

(5)启动 hdfs:start-dfs.sh,yarn:start-yarn.sh或者直接start-all.sh

2.hadoop快速kill一个进程

hadoop job -list查看进程,hadoop job -kill [进程编号]

3.hadoop 新加入一个节点和删除节点的操作

新增:hadoop-daemon.sh start datanode 同时启动守护进程:hadoop-daemon.sh start tasktracker

删除:hadoop mradmin -refreshnodes    hadoop dfsadmin -refreshnodes

3.hadoop几种类型资源调度

Fifo schedular(先进先出调度器) :默认,先进先出的原则 
Capacity schedular(计算能力调度器) :选择占用最小、优先级高的先执行,依此类推。 
Fair schedular(公平调度器):所有的 job 具有相同的资源

4.hive保存元数据的几种方式

内置内存数据库 derby,挺小,不常用 。 
本地 mysql,常用 
远程端 mysql,不常用 

5.mapreduce中combiner ,partition和shuffle的作用

combiner实质是个本地的reduce,作用在map端,当map的输出文件过多时可以使用combiner在map端提前将一些小文件合并大文件,这样可以提高数据传送到reduce的效率。

partition的作用将数据进行分类,根据key或者value和reduce的数量决定不同key的数据进入相应的reduce中。

shuffle指map端数据传送到reduce端的过程,包含两端的combiner和partition

6.hive内部表和外部表区别

内部表用external修饰:create external table student(id int,name string) row format delimited fields terminated by '\t';

内部表数据由hive管理,保存在hive指定目录,删除表时,数据删除。

外部表数据由hdfs管理,保存在hdfs目录,删除表时,数据还在。

7.Hbase 的 rowkey 怎么创建比较好?列族怎么创建比较好?

rowkey作为主键要唯一易标识保存常查询的字段,筛选效率高,

高表比宽表效率高。

8.用 mapreduce 怎么处理数据倾斜问题

(1)调优参数

set hive.map.aggr=true;//设置map端合并即开启combiner

set hive.groupby.skewindata=true;//开启负载均衡

map端会生成两个job,第一个job会将数据随机分配到reduce,第二个job会按照group by key讲输出结果输入到对应reduce。

(2)可以将map阶段造成倾斜的key再次分组

(3)map端进行combiner

(4)map端join

9.mapreduce实现二级排序

(1)可以将同key所有value进行排序,但是这样数据大时容易内存溢出,不推荐

(2)可以将排序后的key和value拼接组成新的value进行二次排序,需要实现WritableComparable接口或者调用 setSortComparatorClass函数。

具体实现:

    (1)自定义一个类,实现  WritableComparable  这个接口,实现compareTo 方法

    (2)Partitioner 自定义 分区方法

    (3)WritableComparator  自定义 ,实现compare方法

10.hadoop 框架中怎么来优化

mapreduce:

    (1)map端输出较多时可以设置combiner减少输出

    (2)选择合适的参数类型,比如处理整数类型数据时,直接采用IntWritable比以Text类型读入在转换为整数类型要高效。

    (3)合理使用distributedCache,

hdfs:选择合适的数据压缩方式

hive:优化sql,优化函数,解决数据倾斜:hive.groupby.skewindata =true(设置两个mr.job)

hbase:高表效率高与宽表,合理设计rowKey

11.hbase内部机制

服务依赖zookeeper,存储依赖hdfs

HMaster :

1、为 RegionServer 分配 region
2、负责 RegionServer 的负载均衡

HRegionServer:

管理hmaster分配的region,处理客户端通过rpc对region的请求。

Region:

特定范围的rowkey数据集合

12.hdfs的数据压缩算法

(1) Gzip 压缩

优点:压缩率比较高,而且压缩/解压速度也比较快; hadoop 本身支持,在应用中处理gzip 格式的文件就和直接处理文本一样;大部分 linux 系统都自带 gzip 命令,使用方便.

缺点:不支持 split。

 

(2) Bzip2 压缩

优点:支持 split;具有很高的压缩率,比 gzip 压缩率都高; hadoop 本身支持,但不支持 native;在 linux 系统下自带 bzip2 命令,使用方便。

缺点:压缩/解压速度慢;不支持 native。

(3) Lzo 压缩

优点:压缩/解压速度也比较快,合理的压缩率;支持 split,是 hadoop 中最流行的压缩格式;可以在 linux 系统下安装 lzop 命令,使用方便。

缺点:压缩率比 gzip 要低一些; hadoop 本身不支持,需要安装;

(4) Snappy 压缩

优点:高速压缩速度和合理的压缩率。

缺点:不支持 split;压缩率比 gzip 要低; hadoop 本身不支持,需要安装;

13.hive原理

数据存储在hdfs,元数据(表信息)一般保存在配置的mysql

解析hql,根据已有的模板代码拼接成mapreduce程序执行。

14.hbase过滤器

查询数据通过get方法或者scan方法时,设置过滤器过滤数据。

见:https://my.oschina.net/u/3346994/blog/1924054

15.datanode备份?挂掉一个datanode会怎么样?

dfs.replication设置备份数,默认3个。

挂掉一个namenode会将这个datanode上的工作分配给其他datanode

16.hdfs体系

namenode:管理数据块映射;处理客户端的读写请求;配置副本策略;管理HDFS的名称空间;

secondarynamenode:namenode的冷备份,定时合并fsimage和edits,减少hdfs启动时间

热备份:b是a的热备份,如果a坏掉。那么b马上运行代替a的工作。

冷备份:b是a的冷备份,如果a坏掉。那么b不能马上代替a工作。但是b上存储a的一些信息,减少a坏掉之后的损失。

fsimage:元数据镜像文件(文件系统的目录树。)

edits:元数据的操作日志(针对文件系统做的修改操作记录)

namenode内存中存储的是=fsimage+edits。

datanode:数据节点,数据读写。

17.flush过程

RegionServer会将数据刷到硬盘,将内存中的数据删除,同时删除HLog中的历史数据;

2)并将数据存储到HDFS中;

3)在HLog中做标记点。

18.sqoop 在导入数据到 mysql 中,如何让数据不重复导入?如果存在数据问题 sqoop
如何处理? 

 增量导入(对  全量导入)

Sqoop export 提供了一种机制能保证原子性, 使用--staging-table 选项指定临时导入的表。

Sqoop export 导出数据的时候会分为两步:

第一步,将数据导入数据库中的临时表,如果导入期间 Map Task 失败,会删除临时表数据重新导入;

第二步,确认所有 Map Task 任务成功后,会将临时表名称为指定的表名称。

19.hadoop 中,有哪些地方使用了缓存机制,作用?

map阶段后会往本地溢写文件,他们之间会有一个环形缓存区,可以提高效率。

20.mapreduce大致流程?      

1.输入文本信息,由FileInputformat通过getSplit获取split数组,RecordReader处理读取每一行交给map处理。

2.map处理。

3.map处理完,如果设置了combiner,则先在map端进行一次合并,再交给partitioner处理(shuffle过程)。

4.排序。

5.reduce处理。

6.FileOutputformat输出数据文件。

21.mapreduce如何实现两张表连接?

1.map端join,map端实现setup方法,预处理加载小表导缓存中(map),在map方法中拿大表中的数据到小表中匹配。

2.reduce端join,map端同时输入两个表的文件,通过读取路径判断来自哪个文件,然后通过拼接字符串标记value。reduce端判断相同key下的value集合分别来自哪个文件,来自A文件进行A处理,插入到A集合,来自B文件进行B处理,插入到B集合,处理完value,对两个集合进行笛卡尔积。

22.设置compression?

conf.setCompressMapOutput(true);
conf.setMapOutputCompressorClass(GzipCodec.class);

mapred.output.compress

mapred.output.compression.codec

23.hdfs,replica如何定位?

hdfs中的namenode保存着元数据,目录信息,文件块信息,当客户端进行读写操作,通过请求namenode,namenode再找到对应的datanode。

24.hbase搭建过程?zookeeper搭建过程?

1.下载上传并解压安装包

2.修改配置文件

    hbase-site.xml:主要参数

hbase.rootdir:hbase的数据,放到hdfs的哪个位置上存储

hbase.cluster.distributed:集群是否开启,默认是false,我们需要修改成true

hbase.zookeeper.quorum:zookeeper集群(mini1,mini2,mini3)

3.配置环境变量

4.分发到各服务器

5.启动zookeeper

6.启动hdfs

7.启动hbase

zookeeper需要在dataDir目录下新建myid文件,zkServer.sh start启动

25.hadoop运行原理?

详见:https://blog.csdn.net/Gscsd_T/article/details/80061504

mapreduce原理:https://blog.csdn.net/wypersist/article/details/79783872

hdfs存储机制:https://www.cnblogs.com/jstarseven/p/7682293.html

26.举个实例讲解mapreduce流程?

27.如何查看hadoop健康状况

有完善的集群监控体系(ganglia,nagios)

Hdfs dfsadmin –report

Hdfs haadmin –getServiceState nn1

也可以通过图形化的管理端界面:

http://mini1:50070

28.hadoop1.0和2.0有哪些区别

29.hive调优

1.建立分区,查询选择分区查询

2.join操作,经历将小表或者子查询放在join左侧,会被加载到内存,提高效率。

3.排序优化,order by 一个reduce效率低,distirbute by +sort by 也可以实现全局排序

4.合并小文件

  • 是否合并Map输出文件:hive.merge.mapfiles=true(默认值为真)
  • 是否合并Reduce 端输出文件:hive.merge.mapredfiles=false(默认值为假)

 30.hbase宕机如何处理?

 

31.mapreduce中的几个组件和执行流程

JobClient,Jobtracker,TaskTracker

32.练习

mapreduce:

1,手机流量统计

2.用 Hadoop 分析海量日志文件,每行日志记录了如下数据: 
TableName(表名),Time(时间),User(用户),TimeSpan(时间开销)。 
要求: 
编写 MapReduce 程序算出高峰时间段(如上午 10 点)哪张表被访问的最频繁,以
及这段时间访问这张表最多的用户,以及这个用户的总时间开销

3.如今有 10 个文件夹,每个文件夹都有 1000000 个 url.如今让你找出
top1000000url。 

linux:

1.find 用法 
2.给出一个文本:比如 http://aaa.com 
http://bbb.com 
http://bbb.com 
http://bbb.com 
http://ccc.com 
http://ccc.com 
         让写 shell 统计,最后输出结果:aaa 1 
         Ccc 2 
         Bbb 3 
         要求结果还要排

3.jps命令,kill 命令,问 awk,sed 

4.

某个目录下有两个文件a.txt和b.txt.文件格式为(ip username),例如:

a.txt

127.0.0.1 zhangsan
127.0.0.1 wangxiao
127.0.0.2 lisi
127.0.0.3 wangwu


b.txt

127.0.0.4 lixiao
127.0.0.1 lisi
127.0.0.2 lisi


a.txt,b.txt 中至少 100 万行,用 linux命令行 实现下列要求(题目要求linux命令行方式。。。):
1)a.txt,b.txt 中各自的 ip 个数,ip 的总个数。
2)a.txt 中存在的 ip 而 b.txt 中不存在的 ip。
3)每个 username 出现的总个数,每个 username 对应的 ip 个数。

你可能感兴趣的:(大数据)