mysql服务器运行sql文件的下令 (mysql 服务器所利用 的设置 文件是 )〔mysql服务器执行sql文件〕

  科多大数据小讲堂 之大数据分析之技能 框架整理 。

  大数据离线部分

  HDFS

  1:HDFS的架构部分 及工作原理

  NameNode:负责管理元素据,将信息生存 在内存中

  DataNode:生存 数据 ,以块的情势 生存 。启动后必要 定时的向NameNode发送心跳,陈诉 自身存储的块信息

  2:HDFS的上传过程

  3:HDFS的下载

  4:NameNode的元数据安全机制

  以记日记 的情势 将每一个操纵 写在磁盘的日记 文件中,然后借助Secondary NameNode的checkpoint功能将fsImage和日记 举行 归并 。

  重点:记取 checkpoint工作过程

  5:假如 服务器的磁盘坏了 ,怎样 救济 数据?

  设置 多个dfs.namenode.name.dir 路径为本地 磁盘路径和nfs网络磁盘路径 。

  6:hdfs集群中,受到拓展瓶颈的是NameNode还是 Datanode?

  是NameNode,由于 DataNode不敷 可以很方便的程度 拓展,而工作的NameNode只有一个 ,他的存储本领 完全取决于他的内存。

  但是着实 NameNode一样平常 不会成为瓶颈,由于 一个块记录 的元数据信息巨细 约为150B,假如 每一个块巨细 为128M的话 ,那么15G的NameNode内存可以存储12PB的数据。

  7:datanode显着 已启动,但是集群中的可用datanode列表中就是没有,怎么办?

  在她的Data目次 下 ,已经有其他NameNode的标记 ,这个NameNode不认。

  8:文件下载到window中,为什么会报错?

  默认利用 操纵 体系 的内核举行 磁盘数据的写入 ,也就是必要 一个winutil的工具,而默认的安装包中不提供,以是 必要 编译源码大概 设置为利用 Java的举行 磁盘写入 。

  9:hadoop的HA(高可用)

  MapReduce

  1:MapReduce中 ,fileinputformat - map - shuffle - reduce的过程

  2:MapReduce中,job提交的过程

  3:自界说 Javabean作为数据,必要 extends writableandCompareble接口。

  4:自界说 outputformat,举行 差别 方向的处理 惩罚 。

  5:MapReduce的一些应用场景

  1 、排序而且 求 TOPOne 和TOPN

  2、求某个用户前几个月的总流量 ,而且 选择出流量前几名的用户 。

  3、reduce端的join

  4 、map端join

  5、求共同好友 题目

  hive

  1:什么是hive?

  一个将sql转化为MapReduce程序的、单机版的、数据堆栈 工具。通过关系型数据库(mysql等)来记录 表元数据信息。真正的数据在HDFS中 。

  Hive利用 HDFS存储数据,利用 MapReduce查询分析数据

  hive2.0版本之后,都是基于Spark处理 惩罚 了。

  安装的时间 ,必要 留意 jline的版本辩论 。

  2:怎样 启动?

  3:实行 的sql的情势

  hiveshell 、 hive -e “sql下令 ”、 hive -f “一个包罗 着很多 SQL语句的文件 ”

  4:hive的创建表操纵

  内部表、外部表 就差连个关键字(external 和 location)

  分区表 、分桶表

  5:hive查询表

  join

  动态分区

  分组查询

  复杂的谁人 累计报表操纵 。

  6:hive自界说 函数(UDF)

  sqoop

  利用 hadoop的map端举行 数据的并行导入导出。

  安装在HDFS上,设置 HDFS的路径和Hive路径即可。

  flume

  1:agent:sources 、 channel 、 sinks

  2:sources:exec 、spooldir、arvo (加一个拦截器)

  3:channel:men 、 disk

  4:sinks:arvo 、HDFS、kafka

  5:flume安装在数据源这一边 。

  6:怎样 自界说 拦截器?

  class myiterceptor implements Iterceptor

  //内里 有一个静态的公共内部类。

  public static class mybuilder implements Iterceptor.Builder

  7:怎样 实现flume的多级毗连 ,以及怎样 实现高可用?

  大数据及时 storm部分

  storm

  1 : storm是一个及时 的盘算 框架 ,只负责盘算 ,不负责存储。它通过spout的open和nextTuple方法去外部存储体系 (kafka)获取数据,然后传送给后续的bolt处理 惩罚 ,

  bolt利用 prepare和execute方法处理 惩罚 完成后,继承 今后 续的bolt发送,大概 根据输出目次 ,把信息写到指定的外部存储体系 中。

  2:storm的数据不丢失原理

  交错 收到的数据做异或元算中心 结果 不为0的原理 。

  3:设置spout_max_pending (可以限流)

  4:jstorm的通讯 机制,每一个:worker都有一个担当 线程和输出线程

  5:storm的架构分析

  nimbus、zookeeper 、supervisor、worker

  nimbus:担当 任务 哀求 ,而且 举行 任务 的分发,末了 写入到zookeeper中。

  supervisor:担当 nimbus的任务 调治 ,然后启动和管理属于本身 的worker进程 ,supervisor是可以快速失败的 ,不影响任务 的实行 。

  我们可以写一个脚原来 监控supervisor的进程 ,假如 不存在了,立马启动 ,就可以了 。

  worker:启动spoutTask、boltTask等等任务 ,去实行 业务逻辑。

  6:storm的编程模子

  topology:由spout和bolt构成 的一个流程图。他形貌 着本次任务 的信息

  spout:

  open

  nexttuple

  declareOutputFields

  bolt:

  prepare

  execute

  declareOutputFields

  6:storm的tuple布局 ,它内里 有两个数据布局 ,一个list、一个是map

  list:记录 着信息

  map:记录 着每个字段对应的下表,通过找到下边再去上面的list中找数据 。

  7:storm任务 提交的过程

  kafka

  1 、kafka和jms的区别

  2、kafka的topic明白

  topic是逻辑存在的,真正在物理磁盘中的表现 是partitioner ,一个topic可以对应多个partition,差别 的paritition存放在差别 的broker中,以进步 并发存储本领 。

  3、partitioner

  partition是topic信息在屋里存储中的具体 表现 ,在磁盘中它是一个文件夹,名字是topic名字_partition编号。4 、segment

  每个partition对对应多个segment文件,默认巨细 是1G,为了快速定位到指定的offset位置 。

  5、kafka为什么这么快

  1/利用 了操纵 体系 利用 的pagecache缓存 ,缓存大,缓存到肯定 量的数据时,以次序 写入的方 式写入到磁盘中。

  由于 :磁盘次序 写入的方式非常的快=600MB/s,而随机存储只有100kb/s左右。

  2/利用 操纵 体系 的sendfile技能 。在读取信息发送的时间 ,不必要 颠末 用户区,而是在os端直接发送,可以镌汰 很多 步调 。

  6、为什么要多个partitioner7 、为什么每个partitioner必要 切分为多个segment文件

  8、kafka的HA

  对partitioner分区举行 备份 ,利用 zookeeper的推举 机制选择leader。数据的生产存储和斲丧 读取都是有leader负责,其他的replicatition只是负叱责 份而已。

  9、kafka怎样 用shell脚原来 讲一个文件读写进去?10 、kafka怎样 用JavaAPI实现生产者和斲丧 者?

  大数据一站式办理 方案:Scala和Spark部分

  scala回顾

  1、怎样 界说 变量

  2、怎样 界说 函数 、方法,如安在 将函数作为方法的参数传入进去?

  3、条件判定 语句 ,循环控制语句

  4、聚集 操纵 :Array、list 、set、tuple、map (留意 :可变和不可变的区别)5 、样例类的利用 6、trit、抽象类的利用 7 、主构造器和辅助构造器的利用

  8、scala的高级特性

  高阶函数:作为值得函数、匿名函数 、闭包、柯里化

  隐式转换:一个类对象中,假如 他没有摸一个功能,但是我们有想要它实现 ,可以利用 英式转换的方式 。

  object MyPredef{

  //界说 隐式转换方法

  implicit def fileReadToRichFile(file: File)=new RichFile(file)

  }

  利用 :

  import MyPredef._9、Actor

  写起来像多线程,用起来像socket10 、akka

  ActorSystem.actorOf()创建一个Actor,

  创建的同时,就是实行 Actor中的prestart方法 ,去初始化一些信息。

  Spark RDD

  1、SparkRDD叫做:弹性分布式数据集,着实 就是一个类,用来形貌 :任务 的数据从那边 读取、用谁人 算举行 盘算 、得到的结果 有存放在那边 、RDD之间的依靠 关系是款以来还是 窄依靠

  2、RDD有五个特点

  一系列分区

  每个算子作用在每个分区上

  一系列依靠 关系

  最有位置(假如 从HDFS上读取数据)

  3、RDD的两种算子Transformation和Action

  Transformation是懒加载 ,只是界说 了这个算子的任务 ,该怎样 做,但是还没有做。

  Action是立即 实行 ,当实行 到Action时,会触发DAGSchudle切分stage,切分完成后 ,有TaskScheduler将任务 通过DriverActor发送到executor中实行 。

  4 、RDD的几个复杂的Transformation

  -combineByKey(x=x,(a:List[String],b:String) = a :+ b,

  (m:List[String],n:List[String])= m ++ n)

  第一个参数表现 分组后的第一个值如那边 理 惩罚 ,

  第二个参数表现 后续的值和前一个值如那边 理 惩罚 ,

  第三个参数表现 ,map端处理 惩罚 完成后,在reduce端怎样 对这些list举行 处理 惩罚 。

  -aggregate(“初始量,可以是String也可以是int”)(第一个func,第二个func)

  初始量作用于没一个分区 ,第一个func作用于map端,第二个func作用于reduce端。

  -reduceByKey(_+_) 作用于map端和reduce端,可以举行 局部聚合 。

  着实 reduceByKey和aggregateByKey在底层都调用了combineByKey方法来实现相应 的功能。

  -mapPartitions

  对每一个分区举行 操纵 ,直接在内里 利用 匿名函数即可

  固然 假如 逻辑非常复杂也是可以思量 在表面 先界说 好这个函数之后在传输进去。

  rdd1.mapPartitions((it:Iterator[String]) = {

  it.toList.map(x = (x,1)).iterator

  })

  mapPartitionsWithIndex

  起首 界说 一个函数,固然 也可以写在内里 作为匿名函数

  val func = (index:Int, it:Iterator[Int]) = {

  it.toList.map(x = ("index:" + index, x)).iterator

  }

  rdd1.mapPartitionsWithIndex(func).collect

  5、RDD自界说 Partitioner

  //自界说 分区器,重写内里 的getPartition方法和numPartitions方法 。

  //构造这个对象的时间 ,就把全部 环境 的信息传输过来,然后在内里 举行 分类处理 惩罚 。

  class HostPartition(hostArr:Array[String]) extends Partitioner{

  //对全部 的数据举行 分类,每一种范例 对应一个int编号。以是 利用 map比力 符合 。

  val map = new mutable.HashMap[String,Int]()

  for(index

  map.put(hostArr(index),index)

  }

  //重写getPartition的方法。

  override def getPartition(key: Any): Int = {

  map.getOrElse(key.toString,0)

  }

  override def numPartitions: Int = hostArr.length

  }

  应用:

  val hostPartition: HostPartition = new HostPartition(hostList)

  val allPartitionRDD: RDD[(String, (String, Int))] = host_url_count.partitionBy(hostPartition)

  6、自界说 排序规则 ==界说 一个

  case class Gril(yanzhi:Int,nianling:Int) extends Ordered[Gril] with Serializable{

  override def compare(that: Gril): Int = {

  val yanzhiResult: Int = this.yanzhi.compareTo(that.yanzhi)

  if(yanzhiResult == 0){

  return this.nianling.compareTo(that.nianling)

  }

  return yanzhiResult

  }

  }

  应用:

  val rdd2: RDD[(String, Int, Int)] = rdd1.sortBy(msg = Gril(msg._2,msg._3))

  Spark的SQLContext

  1 、Spark整合Hive和HDFS 只必要 将Hive的hive-site.xml ; hadoop的core-site.xml和hdfs-site.xml拷贝到Spark的conf目次 下即可。Spark就知道怎样 利用 hive的表 ,同时也知道去哪个NameNode那边 都数据了。

mysql服务器运行sql文件的命令(mysql 服务器所使用的配置文件是 ) mysql服务器运行sql文件的下令
(mysql 服务器所利用
的设置
文件是 )〔mysql服务器执行sql文件〕 新闻资讯

  2、DataFrame是什么?

  是一个分布式数据集,对RDD的封装 。RDD有的方法他根本 上都有

  3、DataFrame怎样 创建?

  三种方式:-RDD + case class

  -RDD + structType

  -sqlContext.read.format.options(Map())

  4 、DataFrame起首 必要 注册成表布局 之后才可以利用 sqlContext来操纵 。

  dF.registerTempTable(“person”)

  5、利用 sqlContext == 返回一个DataFrame

  sqlContext.sql(“select * from person ”)

  6、DataFrame将数据写入到HDFS大概 mysql中

mysql服务器运行sql文件的命令(mysql 服务器所使用的配置文件是 ) mysql服务器运行sql文件的下令
(mysql 服务器所利用
的设置
文件是 )〔mysql服务器执行sql文件〕 新闻资讯

  val prop = new Properties()

  prop.put("user", "root")

  prop.put("password", "815325")

  //假如 数据库中没有这个表,那么他也会创建一张表(很强大 )

  resultDF.write.mode("append").jdbc("jdbc:mysql://localhost:3306/bigdata","result",prop)