Oracle Big Data SQL Dan Jin Oracle China Big Data Team Copyright 2015, Oracle and/or its affiliates. All rights reserved.
Oracle Big Data SQL 同时支持 Hadoop + NoSQL + RDBMS REST Python node.js SQL R Graph Java Oracle Big Data SQL 即将 NoSQL 2
SQL on Hadoop 的三种形式 在 Hadoop 上实现 RDBMS 的存储与计算 Hive, Impala, Pivotal Hawk 只提供基于 Hadoop 的 SQL 解析引擎 IBM Big SQL 与 RDBMS 的交互 Oracle, Teradata, SQL Server 3
几种 SQL on Hadoop 对比 Oracle Big Data SQL Cloudera Impala Teradata Query Grid Microsoft Polybase IBM Big SQL 数据本地化处理 SQL 语法支持 安全 元数据管理 4
议题 1 BDS 配置要求 2 BDS 安装步骤 3 BDS 实现原理简介 4 其它 Hadoop+RDBMS 连接方式 Copyright 2015, Oracle and/or its affiliates. All rights reserved.
Oracle Big Data SQL 支持平台 数据库版本 :12.1.0.2 以上 Hadoop 版本 :CDH 5.5 以上或 HDP 2.3 以上
Big Data SQL 配置 Engineered Systems Engineered Systems* Oracle Cloud* B X Commodity Servers Mixed Deployment* Mixed Deployment* * 即将支持!
议题 1 BDS 配置要求 2 BDS 安装步骤 3 BDS 实现原理简介 4 其它 Hadoop+RDBMS 连接方式
第一步 : 下载 Big Data SQL 从 edelivery 上下载介质 :https://edelivery.oracle.com 选择适合的平台 :BDA / CDH / HDP 9
第二步 : 安装前环境准备 需要运行的服务需要安装的包系统工具环境要求 HDP HDP 2.3 Ambari 2.1.0 2.7.1 YARN 2.7.1 Zookeeper 3.4.6 Hive 1.2.1 Tez 0.7.0 JDK version 1.7 or later Python version 2.6 OpenSSL version 1.01 build 16 or later curl rpm scp tar unzip wget yum ntp enabled iptables disabled /usr/java/default CDH CDH5.5 and higher 2.6.0 YARN 2.6.0 Zookeeper 3.4.5 Hive 1.1.0 JDK version 1.7 or later Oracle Instant Client 12.1.0.2 or higher Oracle Instant JDBC Client 12.1.0.2 or higher PERL LibXML 1.7.0 or higher Apache log4j unzip finger wget /usr/java/default /usr/java/latest /opt/cloudera/parcels/cdh/lib/ 10
第三步 :Hadoop 集群端安装 1. 在集群上安装软件 2. 为每个节点进行 OS 和网络配置 3. 在管理服务器上配置服务 4. 为数据库连接获取集群信息 5. 为数据库端安装创建 bundle 包 11
第四步 :Oracle 数据库 Server 端安装 1. 将 binaries 拷贝到数据库节点 2. 网络配置 3. 将集群 metadata 加载到数据库 4. 每个数据库节点都需要安装 12
议题 1 BDS 配置要求 2 BDS 安装步骤 3 BDS 实现原理简介 4 其它 Hadoop+RDBMS 连接方式
Hadoop 中的数据存储 Example: 1TB File {"custid":1185972,"movieid":null,"genreid":null,"time":"2012-07-01:00:00:07","recommended":null,"activity":8} {"custid":1354924,"movieid":1948,"genreid":9,"time":"2012-07-01:00:00:22","recommended":"n","activity":7} {"custid":1083711,"movieid":null,"genreid":null,"time":"2012-07-01:00:00:26","recommended":null,"activity":9} Block B1 {"custid":1234182,"movieid":11547,"genreid":44,"time":"2012-07-01:00:00:32","recommended":"y","activity":7} {"custid":1010220,"movieid":11547,"genreid":44,"time":"2012-07-01:00:00:42","recommended":"y","activity":6} {"custid":1143971,"movieid":null,"genreid":null,"time":"2012-07-01:00:00:43","recommended":null,"activity":8} {"custid":1253676,"movieid":null,"genreid":null,"time":"2012-07-01:00:00:50","recommended":null,"activity":9} {"custid":1351777,"movieid":608,"genreid":6,"time":"2012-07-01:00:01:03","recommended":"n","activity":7} Block B2 {"custid":1143971,"movieid":null,"genreid":null,"time":"2012-07-01:00:01:07","recommended":null,"activity":9} {"custid":1363545,"movieid":27205,"genreid":9,"time":"2012-07-01:00:01:18","recommended":"y","activity":7} {"custid":1067283,"movieid":1124,"genreid":9,"time":"2012-07-01:00:01:26","recommended":"y","activity":7} {"custid":1126174,"movieid":16309,"genreid":9,"time":"2012-07-01:00:01:35","recommended":"n","activity":7} {"custid":1234182,"movieid":11547,"genreid":44,"time":"2012-07-01:00:01:39","recommended":"y","activity":7}} Block B3 {"custid":1346299,"movieid":424,"genreid":1,"time":"2012-07-01:00:05:02","recommended":"y","activity":4} 1 block = 256 MB Example File = 4096 blocks InputSplits = 4096 扫描并行度 14
MapReduce 和 Hive 如何读取数据 Consumer 扫描并创建每条记录, 支持 任何 格式 Create ROWS & COLUMNS 数据格式定义 反序列化, 以 Table 的形式展现 SCAN Data Node disk RecordReader => 数据扫描 (keys and values) InputFormat => 并行度 SerDe => 构建列 Metastore => 映射 DDL 到 Java 访问类 15
Big Data SQL : 一种新的 Hadoop 计算引擎 计算层 MapReduce and Hive Spark Impala Search Big Data SQL B Resource Management (YARN, cgroups) Filesystem () 存储层 NoSQL Databases (Oracle NoSQL DB, Hbase) 16
通过访问 Hive Metastore 得到数据定义 Oracle Big Data SQL SparkSQL Hive Impala Hive Metastore Table Definitions: movieapp_log_json Tweets avro_log DDL 与 Java 访问类的 mapping 17
Big Data SQL 特性之一 :Hadoop 智能扫描 (Smart Scan for Hadoop) Big Data SQL Server Smart Scan External Table Services Data Node 上层 Oracle 数据库 条件过滤 列投影 解析半结构化数据 下层 Hadoop 存储引擎 让计算靠近数据 Schema-on-read 的 hadoop 数据访问模式 转换成 Oracle 数据流 Disk 18
10110010 10110010 10110010 Big Data SQL 数据流 Big Data SQL Agent Smart Scan External Table Services 3 2 1 2 从 DN 上读取数据 直接路径读 基于 C 开发的读取引擎 ( 支持部分格式 ) 其它使用 Hadoop 原生类来访问 转换成 Oracle 格式数据 SerDe RecordReader Data Node Disks 1 3 基于 Oracle 格式数据做 Smart Scan 条件过滤 列投影 解析 JSON/XML 模型评分
Big Data SQL 特性之二 : 存储索引 (Storage Index) Field1, Field2, 1001 1010 1045 1109 1043 1001 1045 1609 1043 11455 1909 12430 13010 10450 1909 2043 Field3,, Fieldn Block1 (256MB) Block2 (256MB) 例子 : 找到对所有影片 MOVIE_ID=1109 的评分 Index B1 Movie_ID Min: 1001 Max: 1609 B2 Movie_ID Min: 1909 Max: 13010 存储索引通过减少 IO 的扫描提升查询性能 通过外部表 Mapping 上的数据 存储索引记录每个 block 的最大 最小值 20
Big Data SQL 特性之三 :C-Base 的扫描引擎 CREATE TABLE text_table ( a VARCHAR2(40), b NUMBER, c VARCHAR2(255)) ORGANIZATION EXTERNAL ( TYPE ORACLE_HIVE DEFAULT DIRECTORY DEFAULT_DIR ACCESS PARAMETERS ( com.oracle.bigdata.datamode=c )) REJECT LIMIT UNLIMITED; 基于 C 开发的引擎,3x 性能提升 目前只支持分割文本和 JSON 手工设置可得到最大性能
Big Data SQL 特性之四 : 条件下沉 Big Data SQL Agent Smart Scan Big Data SQL Agent Smart Scan SELECT ticker, AVG(price) OVER ( PARTITION BY ticker ORDER BY mnth ) as avg_price FROM stock_prices WHERE mnth < :x AND mnth > :y AND stx_xchange = :z ORDER BY mnth SELECT ticker, price, mnth WHERE mnth < :x AND mnth > :y AND stx_xchange = :z 将条件推送到存储层评估执行 ( 包括绑定变量 ) 支持下列过滤方式 Parquet/ORC 过滤 ( 自描述格式 ) Hive 分区裁剪 Hbase 子扫描 余下记录仍可实现 SmartScan External Table Services External Table Services Data Node Data Node WHERE mnth < :x AND mnth > :y AND stx_xchange = :z 22
Oracle Big Data SQL 的实现 : 外部表定义 CREATE TABLE movielog ( click VARCHAR2(4000)) ORGANIZATION EXTERNAL ( TYPE ORACLE_HIVE DEFAULT DIRECTORY DEFAULT_DIR ACCESS PARAMETERS ( com.oracle.bigdata.tablename logs com.oracle.bigdata.cluster mycluster )) REJECT LIMIT UNLIMITED; 2 种新的外部表类型 ORACLE_HIVE ( 从 metadata 种继承 ) ORACLE_ ( 手工指定数据访问方式 ) 外部表需要访问 : Hadoop cluster Remote Hive database/table DBMS_HADOOP 可以用作导入 DDL 定义 23
Oracle Big Data SQL 的实现 : 外部表增强 CREATE TABLE ORDER ( cust_num VARCHAR2(10), order_num VARCHAR2(20), order_total NUMBER(8,2)) ORGANIZATION EXTERNAL ( TYPE ORACLE_HIVE DEFAULT DIRECTORY DEFAULT_DIR ) REJECT LIMIT UNLIMITED; 访问优化 基于 C 开发的访问借口引擎 其它使用 Hadoop 原生类来访问 原生并行处理 将并行与 Oracle 数据库 mapping 可扩展的架构 StorageHandler 可以扩展支持其它所有数据类型 比如 : MongoDB, HBase, Oracle NoSQL DB
Big Data SQL 执行步骤 1 : 同步 Metadata, 获得 DDL Big Data Appliance + Hadoop Hive metadata Name Node Data Node Data Node Oracle Catalog Hive metadata External Table External Table create table customer_address ( ca_customer_id number(10,0), ca_street_number char(10), ca_state char(2), ca_zip char(10) ) organization external ( TYPE ORACLE_HIVE DEFAULT DIRECTORY DEFAULT_DIR ACCESS PARAMETERS (com.oracle.bigdata.cluster hadoop_cl_1) LOCATION ('hive://customer_address') ) Exadata + Oracle Database 25
Big Data SQL 执行步骤 1 : 同步 Metadata, 获得 DDL create table customer_address ( ca_customer_id number(10,0), ca_street_number char(10) Hive metadata, ca_state char(2), ca_zip char(10) ) Name Node organization external ( TYPE ORACLE_HIVE Data Node DEFAULT DIRECTORY DEFAULT_DIR ACCESS PARAMETERS Data Node (com.oracle.bigdata.cluster hadoop_cl_1) LOCATION ('hive://customer_address') ) Big Data Appliance + Hadoop Oracle Catalog Hive metadata External Table External Table create table customer_address ( ca_customer_id number(10,0), ca_street_number char(10), ca_state char(2), ca_zip char(10) ) organization external ( TYPE ORACLE_HIVE DEFAULT DIRECTORY DEFAULT_DIR ACCESS PARAMETERS (com.oracle.bigdata.cluster hadoop_cl_1) LOCATION ('hive://customer_address') ) SerDe Exadata RecordReader + Oracle Database InputFormat 26
Big Data SQL 执行步骤 2 : 执行查询 Hive metadata Name Node Data Node Data Node 找到 : 数据位置 数据结构 平行度 提交查询到每个 DN: 数据请求 Context Select c_customer_id, c_customer_last_name, ca_county From customers, customer_address where c_customer_id = ca_customer_id and ca_state = CA Oracle Catalog Hive metadata External Table External Table Data Node Data Node 27
Big Data SQL 执行步骤 2 : 执行查询 Hive metadata 执行 IO 智能扫描 : 过滤行 投影列 Select c_customer_id, c_customer_last_name, ca_county From customers, customer_address where c_customer_id = ca_customer_id and ca_state = CA Oracle Catalog Name Node Data Node Data Node Data Node Data Node 只移动相关数据 相关行 相关列 Hive metadata External Table External Table 应用数据关联 Tables 28
Big Data SQL 执行步骤 3 : 优化扫描 无需一定依赖 Hive 的定义, 可手工设定, 直接通过接口进行数据序列化和反序列化 Hive metadata Name Node Data Node Data Node Data Node Data Node Storage Indexes Min Max Min Max Min Max 自动收集扫描块的最大 最小值 扫描前, 根据最大 - 最小条件确定需要扫描的块 自动跳过无数据的块, 减少扫描 IO, 提高查询性能 Blocks 29
数据安全 DBMS_REDACT.ADD_POLICY( object_schema => 'MCLICK', SELECT object_name * FROM => my_bigdata_table 'TWEET_V', WHERE column_name SALES_REP_ID => 'USERNAME', = SYS_CONTEXT('USERENV','SESSION_USER'); policy_name => 'tweet_redaction', function_type => DBMS_REDACT.PARTIAL, function_parameters => 'VVVVVVVVVVVVVVVVVVVVVVVVV,*,3,25', expression => '1=1' ); B B B *** Filter on SESSION_USER 1 2 3 数据库级别的安全保障 Virtual Private Databases 脱敏处理 Audit Vault and Database Firewall Hadoop 安全 Kerberos 认证 Apache Sentry (RBAC) 数据审计 (Audit Vault) 数据加密 数据表空间加密 BDA 磁盘加密
SOURC ES Oracle 大数据平台统一数据管理 ORACLE BIG DATA SQL DATA RESERVOIR DATA WAREHOUSE Cloudera Hadoop Oracle NoSQL Oracle R Advanced Analytics for Hadoop Oracle R Distribution Oracle Big Data Connectors Oracle Data Integrator Oracle Oracle Database Database In-Memory, Oracle Industry Multi-tenant Models Oracle Industry Models Oracle Advanced Oracle Analytics Advanced Analytics Oracle Spatial & Graph Oracle Spatial & Graph Big Data Appliance Exadata Oracle Event Processing Apache Flume Oracle GoldenGate Oracle Data Integrator Oracle GoldenGate Oracle Event Processing
查询 Big Data SQL : TPC-DS 标准 SQL 测试 耗时 Hive BigData SQL 提升倍数 42 141.7s 12.3s 11.5 52 148.6s 26.3s 5.7 53 151.6s 44.3s 3.4 55 124.6s 11.0s 11.3 59 238.1s 63.5s 3.7 65 294.3s 76.1s 3.9 68 125.8s 8.9s 14.1 73 120.9s 10.2s 11.9 79 132.6s 11.9s 11.1 89 362.0s 67.1s 5.4 98 252.2s 13.1s 19.3 32
Big Data SQL 性能表现
复杂查询 SQL 9: 高价值客户实时分析
议题 1 BDS 配置要求 2 BDS 安装步骤 3 BDS 实现原理简介 4 其它 Hadoop+RDBMS 连接方式
Oracle Loader for Hadoop {"custid":1046915,"movieid":null,"genreid":null,"time":"2012-07-01:00:33:18","recommended":null,"activity":9} {"custid":1144051,"movieid":768,"genreid":9,"time":"2012-07-01:00:33:39","recommended":"n","activity":6} {"custid":1264225,"movieid":null,"genreid":null,"time":"2012-07-01:00:34:01","recommended":null,"activity":8} JSON {"custid":1085645,"movieid":null,"genreid":null,"time":"2012-07-01:00:34:18","recommended":null,"activity":8} {"custid":1098368,"movieid":null,"genreid":null,"time":"2012-07-01:00:34:28","recommended":null,"activity":8} {"custid":1363545,"movieid":27205,"genreid":9,"time":"2012-07-01:00:35:09","recommended":"y","activity":11,"price":3.99} {"custid":1156900,"movieid":20352,"genreid":14,"time":"2012-07-01:00:35:12","recommended":"n","activity":7} {"custid":1336404,"movieid":null,"genreid":null,"time":"2012-07-01:00:35:27","recommended":null,"activity":9} {"custid":1022288,"movieid":null,"genreid":null,"time":"2012-07-01:00:35:38","recommended":null,"activity":8} {"custid":1129727,"movieid":1105903,"genreid":11,"time":"2012-07-01:00:36:08","recommended":"n","activity":1,"rating":3} {"custid":1305981,"movieid":null,"genreid":null,"time":"2012-07-01:00:36:27","recommended":null,"activity":8} Log files 数据库版本 10.2.0.5 11.2.0.4 12.1.0.2 任何平台 Compressed files Parquet Text Sequence files
Oracle Loader for Hadoop Oracle 文件格式转换 数据分区 并行加载 高性能加载 Compressed files Parquet Text Sequence files Log files 一体机 : 15 TB/hour: Load 4.4 TB/hour: Convert + Load
Oracle Loader for Hadoop 解析并加载日志数据中的全部列 加载部分数据 Eg: where date > 1-OCT-2015 Hive syntax example: -D oracle.hadoop.loader.input.hive.partitionfilter = p1 like 'abc%' or (p5 >= '2015-01-10')
Oracle Loader for Hadoop 关键优势 为 Hadoop 优化 并行 负载均衡 在 Hadoop 上进行 Oracle 格式转换 节省数据库的 CPU 安全加载 (Kerberos 磁盘 网络加密) 直接加载到任意数据表 基于内存, 压缩 39
Copy to Hadoop Oracle Big Data SQL 特性 Create Hive table Big Data Appliance + Cloudera Hadoop Data Node Data Node Copy.dmp files to BDA External Table create table customer_address ( ca_customer_id number(10,0), ca_street_number char(10), ca_state char(2), ca_zip char(10)) organization external ( TYPE ORACLE_DATAPUMP DEFAULT DIRECTORY DEFAULT_DIR LOCATION ( customer_address.dmp') ) AS SELECT < > FROM < > Exadata + Oracle Database
Copy to Hadoop 任何查询结果集的 Copy create external cust_data_hive ROW FORMAT SERDE DPSerDe STORED AS INPUT FORMAT DPInputFormat OUTPUT FORMAT LOCATION hdfs_directory Create Hive table Copy the.dmp files to create table cust_data_ext ( ) organization external ( type ORACLE_DATAPUMP ) AS SELECT * FROM cust_address p, cust_sales q, WHERE p.cust_id = q.cust_id; Creates.dmp files 41
Copy to Hadoop 热数据 暖数据 冷数据 通过 Big Data SQL 查询所有数据 create external table sales_2014 ROW FORMAT SERDE DPSerDe STORED AS INPUT FORMAT DPInputFormat OUTPUT FORMAT LOCATION hdfs_directory 冷数据归档分区为查询分析服务 Create Hive table Copy the.dmp files to create table sales_2014 ( ) organization external ( type ORACLE_DATAPUMP Hot data Fast query ) AS SELECT * FROM sales In-memory query WHERE date < 1-Jan-2014; Create.dmp files 42
Copy to Hadoop Copy dmp 文件到 的方式 在本地文件系统上创建 dmp 文件, 然后 copy 到 $ hadoop fs -put *.dmp 直接通过 FUSE mount 在 上创建 dmp 文件 Considerations 快速, 简单, 无需额外技术 小数据量 ( 百 GB 级别 ), 可通过增加 DOP 来支持大数据集 在 ACFS 上创建 dmp 文件, 通过 distcp 快速写入 支持混合负载 43
Oracle Table Access for Hadoop 直接 快速 并行 安全的从 Hadoop 中访问 Oracle 数据 在 Hive 中创建外部表 Spark Impala Hive 并行查询 易于实现 快速访问 Oracle 数据 HCatalog Storage Handler Input Format 生成数据分片 为每个分片转换 HQL 成 Oracle SQL 通过 Hadoop 任务并行处理 SQL 分片 返回匹配数据给 Hadoop query coordinator 44
Accenture Data Processing TCO Analysis Security Framework Oracle 有世界上最强的 SQL 引擎, 将这个 SQL 引擎与 Hadoop 结合使应用更加容易进行跨平台 (Hadoop+Oracle) 分析 - Kerry Osborne, Managing Director, Accenture Enkitec Group
BISTel: 传感器数据分析 收益 Oracle BigData SQL 允许我们将 Oracle Exadata 和 BDA 完美地结合在一起, 无需额外的工作 性能与单独使用 Oracle Exadata 基本没有区别, 无论数据驻留在 Exadata 中或 BDA 中, 无缝分析数据并对最终用户完全透明 Oracle BigData SQL 带来硬件 软件和时间方面巨大成本节省, 以最小的性能牺牲帮助我们和我们的客户快速的利用大数据进行分析 BigData SQL 已经大大提升了我们研发 销售营销和服务团队的工作效率 Keith Han 研发总监 业务目标 快速进行产量 / 缺陷 / 质量等相关数据的根源分析 使用 SQL on Hadoop 技术数据, 进行巨量数据的跨平台评分, 不允许数据在数据库与 Hadoop 之间传输 解决方案 Exadata X5-2 half Rack, BDA Full Rack (9 nodes allocated) Oracle Big Data SQL Oracle R Enterprise BISTel s Architecture 数据处理 Oracle Big Data SQL SQL TCO Best with BDA Exadata Oracle R Enterprise 分析 Oracle R Enterprise Oracle Big Data SQL 整合 Infiniband from DWH BDA TA: Trace Analytic s
高级查询与分析支持完整的 SQL 语句和所有分析函数 全数据分析 RDBMS, Hadoop and NoSQL 安全统一的安全管理 极速性能跨平台 SQL 处理 应用透明无需更改应用代码 Oracle 大数据管理平台
统一数据池和数据仓库 Query in-place with Big Data SQL Oracle Table Access for Hadoop B Oracle Loader for Hadoop Copy to Hadoop 数据池 / 数据湖 / 数据水库 15 TB/hour : 数据交换 4.4 TB/hour : 数据转换 + 交换 数据仓库 48