Hbase二级索引设计方案(ES2.4.4).doc_第1页
Hbase二级索引设计方案(ES2.4.4).doc_第2页
Hbase二级索引设计方案(ES2.4.4).doc_第3页
Hbase二级索引设计方案(ES2.4.4).doc_第4页
Hbase二级索引设计方案(ES2.4.4).doc_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

I 目 录 1方案介绍 1 1 1概述 1 1 1 1 Hbase 1 1 1 2 Elasticsearch 1 1 1 3 Hbase Observer 2 1 2方案目标 2 1 3方案流程 3 2ELASTICSEARCH 安装部署 4 2 1安装准备 4 2 1 1 服务器准备 4 2 1 2 新建用户 4 2 1 3 调整系统参数 4 2 2JDK 安装 5 2 3ES 安装及配置 6 2 3 1 解压缩 6 2 3 2 配置 6 2 3 3 启动及验证 7 2 3 4 集群验证 8 2 4Head 插件安装 9 2 4 1 简介 9 2 4 2 安装 9 2 5Marvel 插件安装 10 2 5 1 简介 10 2 5 2 安装 每个节点 10 2 6Kibana 安装 10 2 6 1 简介 10 II 2 6 2 安装 11 2 6 3 验证 12 2 7IK 分词器安装 每个节点安装 12 2 7 1 验证分词效果 13 3数据同步程序配置 14 3 1多数据源的数据同步 14 3 2创建索引 mapping 14 3 3编码实现 16 3 4Observer 的部署 16 3 5测试 17 4常见问题汇总 18 第 1 页 共 18 页 1 方案介绍方案介绍 1 1概述概述 1 1 1Hbase Hbase 是运行在 Hadoop 上的 NoSQL 数据库 它是一个分布式的和可扩展 的大数据仓库 也就是说 HBase 能够利用 HDFS 的分布式处理模式 并从 Hadoop 的 MapReduce 程序模型中获益 除去 Hadoop 的优势 HBase 本身就是 十分强大的数据库 它能够融合 key value 存储模式带来实时查询的能力 以及 通过 MapReduce 进行离线处理或者批处理的能力 总的来说 Hbase 能够让你 在大量的数据中查询记录 也可以从中获得综合分析报告 然而 随着在 HBase 系统上应用的驱动 人们发现 Global Rowkey Indexing 不再满足应用的需求 单一的通过 Rowkey 检索数据的方式 不再满足更多应 用的需求 由于 hbase 基于行健有序存储 在查询时使用 Rowkey 十分高效 然 后想要实现关系型数据库那样可以随意组合的多条件查询 查询总记录数 分 页等就比较麻烦了 所以需要我们自己来实现二级索引来满足业务的复杂查询 及实时检索 1 1 2Elasticsearch Elasticsearch 是一个实时的分布式搜索和分析引擎 它可以帮助你用前所未 有的速度去处理大规模数据 它可以用于全文搜索 结构化搜索以及分析 Elasticsearch 是一个建立在全文搜索引擎 Apache Lucene 基础上的搜索引擎 可 以说 Lucene 是当今最先进 最高效的全功能开源搜索引擎框架 Elasticsearch 并不仅仅是 Lucene 这么简单 它不但包括了全文搜索功能 还可以进行以下工作 分布式实时文件存储 并将每一个字段都编入索引 使其可以被搜索 实时分析的分布式搜索引擎 可以扩展到上百台服务器 处理 PB 级别的结构化或非结构化数据 第 2 页 共 18 页 1 1 3Hbase Observer HBase 0 92 版本后推出了 Coprocessor 协处理器 一个工作在 Master RegionServer 中的框架 能运行用户的代码 从而灵活地完成分布式数 据处理的任务 Coprocessor 包含两个组件 一个是 EndPoint 类似关系型数据库的存储过 程 用以加快特定查询的响应 另一个就是 Observer 类似关系型数据库的 触发器 Observer 也分为几个类型 其中 RegionObserver 提供了一组表数据 操作的钩子函数 覆盖了 Get Put Scan Delete 等操作 通常有 pre 和 post 两种情况 表示在操作发生之前或发生之后 我们可以通过重载这些钩子函 数 利用 RegionServer 实现特定的数据处理需求 基于 RegionObserver 的钩子函数 我们可以覆盖 Put 及 Delete 方法来实现 Hbase 和 ES 直接的数据同步 1 2方案目标方案目标 1 实现对 HBase 高性能的范围检索 2 保证数据的低冗余 3 保持数据的一致性 第 3 页 共 18 页 1 3方案流程方案流程 Client Client ES ES Hbase Hbase 条件查询 数据同步 返回符合条件RowKey 根据RowKey获取数据 返回结果集 1 数据进入 HBase 时 利用 Observer 同步进入 ES 索引库 2 客户端根据查询条件 利用 ES 提供的 Java API 对 ES 发起查询请求 3 ES 返回符合条件的 RowKey 4 客户端再根据 RowKey 去 HBase 获取数据 5 最后 HBase 返回结果集 第 4 页 共 18 页 2 ElasticSearch 安装部署安装部署 2 1安装准备安装准备 2 1 1服务器准备服务器准备 为搭建 ElasticSearch 集群 准备了三台服务器 主机 IP 分别为 192 168 1 104 Centos6 5 192 168 1 105 Centos6 5 192 168 1 106 Centos6 5 2 1 2新建用户新建用户 ES 不支持 root 用户启动 分别登录服务器新建 es 用户 并把以下安装包上 传到 home es 文件夹下 新建用户并设置密码 然后给用户文件夹所有权 useradd es passwd es chown es home es 1 jdk 7u71 linux x64 tar gz 2 elasticsearch 2 4 4 tar gz 3 kibana 4 6 4 linux x86 64 tar gz 4 elasticsearch analysis ik 1 10 4 zip 2 1 3调整系统参数调整系统参数 2 1 3 1内核参数调整内核参数调整 vim etc sysctl conf 增加下面的内容 fs file max 65536 第 5 页 共 18 页 vm max map count 262144 执行命令 sysctl p 2 1 3 2资源参数调整资源参数调整 vim etc security limits conf 修改 soft nofile 32768 hard nofile 65536 soft nproc 2048 hard nproc 4096 2 1 3 3调整线程数调整线程数 vim etc security limits d 90 nproc conf 找到如下内容 soft nproc 1024 修改为 soft nproc 2048 2 2 JDK 安装安装 登录 es 用户 进入 home es 文件夹 解压 JDK 安装包 cd home es tar zxvf jdk 7u71 linux x64 tar gz vim etc profile 增加环境变量 export JAVA HOME opt jdk1 7 jdk1 7 0 71 export CLASSPATH CLASSPATH JAVA HOME lib jar export PATH JAVA HOME bin PATH 注 ES2 x 需要 1 7JDK 支持 官网下载 1 7 71 版本 JDK 第 6 页 共 18 页 2 3ES 安装及配置安装及配置 2 3 1解压缩解压缩 cd home es tar zxvf elasticsearch 2 4 4 tar gz 2 3 2配置配置 vim home es elasticsearch 2 4 4 config elasticsearch yml 注 cluster name 集群名称 各个节点的值必须一致 node name 节点名称 各个节点的值不能一致 network host 本机 ip 地址 第 7 页 共 18 页 http port 提供 http 链接的端口号 discovery zen ping unicast hosts 设置 master 节点的初始列表 通过这些节点自动发现新加入集群的节点 discovery zen minimum master nodes 设置这个参数来保证集群中的节点可以知道其它 N 个有 master 资格的节点 官方推荐设置成 N 2 1 N 是集群中 master 节点的数量 修改 ES 内存 vim home es elasticsearch 2 4 4 bin elasticsearch ES HEAP SIZE 8g 注 调整内存大小最好不要超过总资源一半 也不要超过 32G 2 3 3启动及验证启动及验证 cd home es elasticsearch 2 4 4 bin elasticsearch 控制台启动 elasticsearch d 后台启动 看到如下信息则为启动成功 第 8 页 共 18 页 在浏览器中输入 http 192 168 1 105 9200 返回如下结果 2 3 4集群验证集群验证 所有节点启动之后 浏览器访问 http 192 168 1 105 9200 cluster health pretty true 如果返回以下结果说明集群状态正常 第 9 页 共 18 页 2 4Head 插件安装插件安装 2 4 1简介简介 elasticsearch head 是一个 elasticsearch 的集群管理工具 通过 head 可以查看 集群几乎所有信息 还能进行简单的搜索查询 观察自动恢复的情况等等 2 4 2安装安装 cd home es elasticsearch 2 4 4 bin plugin install mobz elasticsearch head 重启 elasticsearch 然后在浏览器输入 http 192 168 1 105 9200 plugin head 可以查看显示效果 如下图 第 10 页 共 18 页 2 5Marvel 插件安装插件安装 2 5 1简介简介 Marvel 插件 在簇中从每个节点汇集数据 这个插件必须每个节点都得安 装 Marvel 是 Elasticsearch 的管理和监控工具 在开发环境下免费使用 它包 含了一个叫做 Sense 的交互式控制台 使用户方便的通过浏览器直接与 Elasticsearch 进行交互 2 5 2安装安装 每个节点每个节点 cd home es elasticsearch 2 4 4 bin plugin install license plugin install marvel agent 2 6Kibana 安装安装 2 6 1简介简介 kibana 插件提供了 Marvel 监控的 UI 界面 kibana 是一个与 elasticsearch 一起工作的开源的分析和可视化的平台 可以 查询 查看并与存储在 elasticsearch 索引的数据进行交互操作 能执行高级的数 第 11 页 共 18 页 据分析 并能以图表 表格和地图的形式查看数据 基于浏览器的接口使我们 能够快速的创建和分享显示 elasticsearch 查询结果实时变化的仪表盘 2 6 2安装安装 cd home es tar zxvf kibana 4 6 4 linux x86 64 tar gz vim home es kibana 4 6 4 linux x86 64 config kibana yml 修改 server host 否则远程无法访问 修改 es 访问路径 cd home es kibana 4 6 4 linux x86 64 bin 安装 Marvel 插件 kibana plugin install elasticsearch marvel latest 安装 sense 插件 kibana plugin install elastic sense 启动 kibana kibana 第 12 页 共 18 页 2 6 3验证验证 浏览器访问 http 192 168 1 105 5601 可以看到 Kibana 以及他的插件 2 7IK 分词器安装 每个节点安装 分词器安装 每个节点安装 cd home es unzip elasticsearch analysis ik 1 10 4 zip d home es elasticsearch 2 4 4 plugins ik vim home es elasticsearch 2 4 4 config elasticsearch yml 在文件最后添加 index analysis analyzer ik type ik 然后启动 ES 验证 IK 看到如下信息 IK 安装完成 第 13 页 共 18 页 2 7 1验证分词效果验证分词效果 在 head 中输入 analyze analyzer ik pretty true text helloworld 中华人民共和国 第 14 页 共 18 页 3 数据同步程序配置数据同步程序配置 3 1多数据源的数据同步多数据源的数据同步 多个数据源中的数据同步问题 大概有三种解决方式 1 客户端双写 分别将数据写入两个数据源 同步 异步 2 主数据源在收到数据后推给辅数据源 同步 异步 3 辅数据源从主数据源中拉取数据 轮训 监听 全量 增量 具体到 HBase 同步到 Elasticsearch 时 后两种方式具体对应的方案就是 HBase 的 Observer 和 Elasticsearch 的 River 这两种方式都可以在数据源中嵌入 自己的业务逻辑 并且依托于集群可以轻松地保证高可用 但是 要使用 River 高效的同步数据 必须要有一种拉取增量数据的方式 而在 HBase 中这并没有 很好的方法实现 所以采用 Observer 的方法 3 2创建索引创建索引 mapping 在 sense 中输入 PUT test settings analysis analyzer ik tokenizer ik 第 15 页 共 18 页 mappings doc source enabled true properties title type string content type string analyzer ik create time type date format yyyy MM dd HH mm ss yyyy MM dd epoch millis 第 16 页 共 18 页 3 3编码实现编码实现 Observer 的 Java 实现只需要继承 BaseRegionObserver 的基类 并重载 postPut 和 postDelete 两个函数 考虑到未来 HBase 的写入会比较频繁 我们利 用 ElasticSearch 的 Bulk API 做了一个缓冲池 不是每次提交 HBase 数据都触发 索引操作 而是积累到一定数量或者到达一定时间间隔才去批量操作 从而降 低了 RegionServer 的网络 I O 压力 3 4Observer 的部署的部署 Observer 提供了两种部署方式 全局部署 把 jar 包的路径加入 HBASE CLASSPATH 并且修改 hbase site xml 这样 Observer 会对每一个表都生效 第 17 页 共 18 页

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论