Newegg.com 大数据实践

醉鱼当道

贡献于2013-05-15

字数:0 关键词:

Newegg Big Data Team • 2013.4 Newegg.com大数据实践 © 2001-2013 新蛋技术服务中心 版权所有 2 提纲 关于 Newegg.com 项目实践 01 一些心得 Q & A 02 0403 © 2001-2013 新蛋技术服务中心 版权所有 关于 Newegg.com © 2001-2013 新蛋技术服务中心 版权所有 4 总部在洛杉矶,在上海、成都、西 安、台北、台中设有研发中心 全球领先的电子商务网站 1800+ 万注册用户,5.5+ 万张日处 理订单量 2012 年, 销售额达到 30+ 亿美元 © 2001-2013 新蛋技术服务中心 版权所有 Newegg.com大数据实践 © 2001-2013 新蛋技术服务中心 版权所有 Big Data in Newegg.com • 部署在美国,主要有 3 个数据中心 • 使用 Ganglia / Nagios 监控 Hadoop / HBase / Cassandra 集群 150+ nodes Hadoop & Hbase 集群 200+ nodes Cassandra 集群 50+ nodes Solr 集群 服务器配置 16 cores 256GB RAM 6 SAS Disks 6 © 2001-2013 新蛋技术服务中心 版权所有 7 大数据应用概要 • Hadoop (0.20.2-cdh-3u1): MapReduce - BI 做数据分析,业务团队做数据分析和检查,每天1万道Job 。 • HBase (0.90.3-cdh-3u1) - 偏实时应用,多个业务项目在开发和应用。 • Cassandra (apache-cassandra-1.0.10) - 偏实时跨机房应用,多个业务项目在开发和应用。 - 同时专注于Cassandra 的二级索引, Cassandra Client 等基础项目。 © 2001-2013 新蛋技术服务中心 版权所有 支持前端后端应用为主,专注性能优化 8 一些实践介绍 • Flume 日志系统 • 基于HBase 的价格爬虫系统 • Cassandra 二级索引 • Cassandra Client Canary © 2001-2013 新蛋技术服务中心 版权所有 Flume Collector Windows Servers Linux Servers Event Log WindowWindowWindowWindow 系统日志 filewatcher Log Files 应用 1111日志 filewatcher …………………… SysLog LinuxLinuxLinuxLinux 系统日志 tail Log Files 应用 1111日志 tail …………………… HDFS HBASE Log Table + Log Counter Table Hadoop EcoSystem HBase Sink Thrift C# Agent C# Agent Flume Agent Flume Agent File Sink Flume Collector HBase Sink File Sink HAProxy TCP 负载均衡 基于Flume的日志收集系统 定时程序,将 HBase 过期数据导入 HDFS Flume Collector Log Agent 应用 nnnn 应用 nnnn Thrift 基于 HBase 做日志内容及统计的实时查询 基于 HDFS 做日志的离线分析 9 © 2001-2013 新蛋技术服务中心 版权所有 10 • 重写了HBaseSink ,改为批量提交,避免堵塞Channel 。 • Agent 收集并向Collector 发送数据时,采用buffer 机制,避免产生瞬时的数 据风暴,将channel 堵塞。 • 基于Counter 实现各种时间区段、各种类型的日志计数, 通过配置 DEFERRED_LOG_FLUSH = true 提升counter 性能。 • 目前已经部署在100+ 服务器的日志收集中,4个flume collector 实例,通过 HAProxy 做TCP 负载均衡,初始阶段峰值为1w 条左右,每条平均约1KB 。 基于Flume的日志收集系统 © 2001-2013 新蛋技术服务中心 版权所有 基于HBase的价格爬虫系统 Nginx 负载均衡 HBase抓取脚本 SVN 库 爬虫调度 (主)应用调度与配置管理 0 爬虫机组2 Crawler App 爬虫机组1 0 爬虫机 Crawler App 0 爬虫机组3 Crawler App 抓取网站配置 抓取任务 回写抓取结果 外部网络 内部网络 应用层 爬虫调度 (备) 数据处理器 1 数据处理器 2 数据处理器 n Path1: Crawler Scheduler Path2: Data Processor 爬虫任务状态 ① ② ③ ④ ① 应用调度启动 ② 爬虫调度分配任务 ③ 爬虫任务执行,回写结果 ④ 数据结果,写入 HBase 爬虫机状态 爬虫机 爬虫机 数据层 SVN Hook 同步更新 11 © 2001-2013 新蛋技术服务中心 版权所有 12 • 中间表 Rowkey = websitecode + hashcode(url ),避免重复抓取。 • 比价表 Rowkey = ItemSKU , 每个网站对应一个column ,方便比价。 • 将常常变更的抓取脚本,通过SVN hook 自动同步到HBase 中,为抓取任 务使用。 • 定期抓取30+ 网站,对比价格变更,每天抓取任务数十万。 基于HBase的价格爬虫系统 © 2001-2013 新蛋技术服务中心 版权所有 13 基于Solr的Cassandra的二级索引 Cassandra Node Cassandra Replication (Gossip Messaging / Replication) Solr Shard Cassandra Node Solr Shard Cassandra Node Solr Shard Cassandra Service Cassandra Thrift Service JMX Web Container (Tomcat) SOLR Instance JVM Stack in Cassandra Node © 2001-2013 新蛋技术服务中心 版权所有 14 Cassandra 跨机房部署 APP 2 BI Hadoop & HiveBackend System Cassandra Ring, NTS, RF-3:3:3 Thrift Client SSTable SSTable Load Balancer Data Server DC1 DC2 DC3 Backend Data ServerData Server Load Balancer Data ServerData ServerData Server Website Frontend Cassandra Data Access Service Cassandra Data Access Service Replication ……APP 1 APP 2 ……APP 1 Website FrontendFrontend Apps Frontend Apps © 2001-2013 新蛋技术服务中心 版权所有 15 • 已经在30+ 节点部署, 每个节点约200GB 数据,Read Latency = 1.679ms , Write Latency = 2.859ms 。 • 二级索引支持 等值查询 / 范围查询 / 模糊查询,索引查询效率一般在 30 - 70 ms 。 • 针对Cassandra 的AutoSnapshot / truncate 操作/ schema version disagree 等方面做了优化。 • 在Solr FilterCache 方面做了优化。 基于Solr 的Cassandra的二级索引 © 2001-2013 新蛋技术服务中心 版权所有 16 • 项目起因 - 支持Java / C# , 减小业务开发团队的工作量 - 提供统一的Cassandra 访问层 - 高性能、高吞吐、低延迟 • 修改 - 基于Hector ,可通过RPC / Thrift 提供服务 - 对并发性能 / RingCahce / Bulk Load / Read-Write Lock 方面做优 化。 定制的Cassandra Client - Canary © 2001-2013 新蛋技术服务中心 版权所有 17 定制的Cassandra Client - Canary © 2001-2013 新蛋技术服务中心 版权所有 17 Cassandra Client – Canary 性能测试 © 2001-2013 新蛋技术服务中心 版权所有 0 1000 2000 3000 4000 5000 6000 7000 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 OPS Aquiles Canary 0 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Aquiles Canary 0 1000 2000 3000 4000 5000 6000 7000 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Aquiles Canary 0 2 4 6 8 10 12 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Aquiles Canary Network IO (MB /s) Network IO (MB /s)OPS Threads Threads Threads Threads 并发写 OPS 并发写网络 IO 并发读 OPS 并发读网络 IO * 测试环境:4 PC cluster ,2 nodes in each DC ,8G RAM ,1000w records R / W, 1KB per records 一些心得 © 2001-2013 新蛋技术服务中心 版权所有 19 一些心得 – HBase设计方面 • Rowkey 设计最重要,根据查询的场景来设计,分散热点 • 提前做表分割PreSplit • 行锁(行原子性),利用一行多个ColumnFamily 的原子性来处理事务, 但一行size 不要太大 • 充分利用多利用多维KV 与多维有序 • 不要太多ColumnFamily, 有效利用列压缩(如lzo ) • 事务太复杂、跨表操作多,慎用HBase © 2001-2013 新蛋技术服务中心 版权所有 20 一些实践 – HBase经验 • Disable Table 失效 • Merge Table 应用 • SocketTimeout 的问题 © 2001-2013 新蛋技术服务中心 版权所有 21 一些心得 – Cassandra设计方面 • 将主要查询条件设计到 Rowkey 中;一对多关系可以通过 Wide Row 实现 • 通过 Composite Column 或前缀字符串设计 Column Name • 不建议使用 SuperColumn • 建议使用 TimeUUIDType ,不建议使用直接 TimeStamp • Counter 不是幂等的,对于 100% 数据准确的场景,避免使用 Counter • 注意写入的 Retry 机制,Cassandra 写入失败时不会回滚 • TTL 是 Column 级别的,不支持动态修改 © 2001-2013 新蛋技术服务中心 版权所有 22 一些实践 – Cassandra经验 • Schema Version Disagreement ? • AutoSnapshot 始终为true ? • Truncate 数据表带来的问题? • 数据写入后未生效?Timestamp 的问题 © 2001-2013 新蛋技术服务中心 版权所有 Q & A Thanks @nescchina http://nesc.newegg.com.cn © 2001-2013 新蛋技术服务中心 版权所有

下载文档,方便阅读与编辑

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 2 金币 [ 分享文档获得金币 ] 2 人已下载

下载文档

相关文档