现在也没搞明白报表开发工程师是做什么的,明天上午就要面试了,先按照职位描述的内容进行复习。

了解hadoop

hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。
Hadoop的框架最核心的框架设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,MapReduce为海量数据提供了计算

HDFS

HDFS采用master/slave架构。一个HDFS集群是由一个Namenode一定数目的Datanodes组成。Namenode是一个中心服务器,负责管理文件系统的名字空间(namespace)以及客户端对文件的访问。集群中的Datanode一般是一个节点一个,负责管理它所在节点上的存储。HDFS暴露了文件系统的名字空间,用户能够以文件的形式在上面存储数据。从内部看,一个文件其实被分成一个或多个数据块,这些块存储在一组Datanode上。Namenode执行文件系统的名字空间操作,比如打开、关闭、重命名文件或目录。它也负责确定数据块到具体Datanode节点的映射。**Datanode负责处理文件系统客户端的读写请求。**在Namenode的统一调度下进行数据块的创建、删除和复制。

简历hadoop技能描述 hadoop工程师工作内容_简历hadoop技能描述


Namenode和Datanode被设计成可以在普通的商用机器上运行。这些机器一般运行着GNU/Linux操作系统(OS)。HDFS采用Java语言开发,因此任何支持Java的机器都可以部署Namenode或Datanode。由于采用了可移植性极强的Java语言,使得HDFS可以部署到多种类型的机器上。一个典型的部署场景是一台机器上只运行一个Namenode实例,而集群中的其它机器分别运行一个Datanode实例。这种架构并不排斥在一台机器上运行多个Datanode,只不过这样的情况比较少见。

集群中单一Namenode的结构大大简化了系统的架构。Namenode是所有HDFS元数据的仲裁者和管理者,这样,用户数据永远不会流过Namenode。

MapReduce

由一台机器作为Master,其他机器作为Slave,因为这些计算单元同时工作,所以也就出现了“集群”的概念。Master作为任务调度者,给多个Slave分配计算任务(Map),最后由Master汇集结果(Reduce),这其实也MapReduce思想所在。

简历hadoop技能描述 hadoop工程师工作内容_简历hadoop技能描述_02

了解hive

hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReuduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。
Hive是建立在 Hadoop 上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。Hive 定义了简单的类 SQL 查询语言,称为 HQL,它允许熟悉 SQL 的用户查询数据。同时,这个语言也允许熟悉 MapReduce 开发者的开发自定义的 mapper 和 reducer 来处理内建的 mapper 和 reducer 无法完成的复杂的分析工作。

熟练掌握SQL

学习的时候,sql就学得很浅薄,不知道这次面试能不能通过了,只能尽力复习。对于数据报表开发来说,存储过程很重要,首先简单复习一下数据库的存储过程。
对于存储过程的复习主要参照这篇文章
存储过程(procedure) 是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数来执行。
存储过程可以包括逻辑控制语句和数据操纵语句,它可以接受参数、输出参数、返回单个或多个结果集以及返回值。
由于存储过程在创建时就在服务器上进行了编译并存储在数据库中,所以存储过程运行要比单个的SQL语句块要快。在调用时只需要提供存储过程名和必要的参数名。
创建一个存储过程的例子。
我们需要CREATE PROCEDURE语句创建一个存储过程,接着补充存储过程的代码,如果存储过程接受参数,需要被包括在名称后。

```sql
create PROCEDURE myStoredProcedure AS
#或者
create PROCEDURE myStoredProcedure @{Parameter Name} {data type} AS

一个更加详细的例子(真心觉得一些简单的例子是快速上手的捷径,对简单的例子进行模仿即能快速实现突破)。

```sql
create PROCEDURE LatestTasks @Count int AS
SET ROWCOUNT @Count
SELECT TaskName AS LastestTasks, DateCreated
FROM Task
ORDER BY DateCreated DESC

上面已经建立好存储过程,如何执行它呢?可以执行或者调用EXEC,如果存储过程要求提供参数,将参数放在程序名的后面。

```sql
EXECUTE LatestTasks
EXEC LatestTasks
EXEC LatestTasks @Count = 5

修改存储过程的例子。 如果需要修改现有的存储过程,只需要换掉CREATE,使用ALTER。

```sql
ALTER PROCEDURE LatestTasks @Count int AS
SET ROWCOUNT @Count
SELECT TaskName AS "Lastest Tasks", Description,DateCreated
FROM Tasks
ORDER BY DateCreated DESC

SQL Server 系统存储过程
SQL Server包含了大量的系统存储过程,以帮助数据库管理任务。通过GUI执行的任务可以通过系统存储过程来完成。

  • 配置安全账户
  • 建立链接服务器
  • 创建一个数据库维护计划
  • 建立全文检索目录
  • 添加远程登录
  • 配置复制
  • 配置调度作业等
    SQL server命名约定
    命名规则要保持一致,这样才会在需要使用存储过程时显得更加容易使用。

SQL 性能调优

性能调优的基础知识主要参照这篇文章浅谈SQL性能调优
性能调优的目的主要有以下两点:
第一,优化响应时间。经过调优后,执行查询、更新等操作的时候,数据库的反应速度更快,花费的时间更少。加索引是最典型也是最廉价的优化手段。
第二,优化吞吐量。 比较常见的手段,通过降低事务隔离级别(一定程度地牺牲数据一致性等),这种“软手段”通常会起到很好的效果。其次,单台DB Server达到一定的瓶颈后,可以通过“集群”等方式,实现请求的“负载均衡”,来达到“抗并发”的目的。