首页IT科技的开发日记(YunTable开发日记(16)教程(0.9版RC))

的开发日记(YunTable开发日记(16)教程(0.9版RC))

时间2025-07-31 13:10:43分类IT科技浏览4380
导读:YunTable开发日记(16)-教程(0.9版RC) 8...

YunTable开发日记(16)-教程(0.9版RC)

8

为了帮助广大初学者能尽快上手YunTable               ,我代表整个YunTable核心团队写一篇使用教程                      ,原因很简单        ,那就是我写文章比较熟练               ,呵呵:)

本教程将首先给大家介绍YunTable的架构和命令接口                      ,以便能让大家对YunTable的概念和使用有一个大致的概念和影响        ,之后将给大家详细介绍YunTable是如何使用的       ,还有                      ,如果想知道如何获取YunTable0.9版RC的源代码               ,请参看前一篇开发日记               。

架构

图1. YunTable的架构图

图1对于很多关注YunTable的人而言已经是非常熟悉       ,通过这张图可以看出YunTable主要有三个模块组成:

Master节点:Master节点在功能上面属于比较“轻               ”的                      ,主要负责维护Table和Region节点之间的对应关系               ,实际数据的查询和输入则都通过Region节点和Client端之间的交互完成,和Master节点无关                      。还有Master节点的默认端口是8301        。 Region节点:其作用是负责处理来自Client端的请求                      ,并存储和管理大量的数据                      ,Region节点非常类似BigTable论文中所提到的Tablet服务器               。每个Region服务器管理多个Tablet,每个Tablet对应一个Table               ,并负责存储属于这个Table的数据                      。还有Region节点的默认端口是8302        。 Client端:主要以名为“YunCli                       ”的命令行为主                      ,主要用于让用户输入与数据处理相关的命令        ,并与后端的Master节点和Region节点进行交互       。

命令接口

现在YunCli主要提供五类命令接口:

add:这个系列命令主要用于重要数据结构的创建               ,主要有三大功能:其一是设置YunCli所对应的Master节点的IP地址                      ,由于对YunCli而言        ,其需要一个对应的Master节点       ,通过“add master:#IP-ADDRESS:PORT#       ”(##里面的东西代表的是需要在输入时确定的东西)能够完成整个设置                      ,例子有“add master:127.0.0.1:8301       ”;其二是为Master节点添加新的Region节点               ,这样能确保数据有地方可存       ,具体命令格式和设置Master节点的相仿                      ,为“add region:#IP-ADDRESS:PORT#                       ”               ,例子有“add region:127.0.0.1:8302               ”;其三是创建新的Table,格式是“add table:#TABLE-NAME#       ”                      ,示例:“add table:people                      ”                       ,当用户输入完这个命令之后,YunCli会将这个请求发给Master节点               ,之后Master节点不仅会在其本身建立一个新的Table数据结构                      ,而且还会根据Region节点的剩余空间和备份数目(Duplication Number)来确定那几个节点创建属于People这个Table的Tablet                      。 put:这个命令的功能比较简单        ,主要是用于添加一行新的数据               ,其格式是“put table row:#ROW-KEY# #COLUMN-NAME#:"#COLUMN-VALUE#" …               ”                      ,在这个命令中        ,ROW-KEY是这行的主键(Primary Key)       ,在ROW-KEY之后是多个COLUMN NAME和VALUE对               。注意                      ,用户需要使用英文的双引号来包裹带有空格等特殊字符的COLUMN VALUE       。例子:“put table:people row:me name:"ike" sex:"male" address.homeaddress:"sh"”                      。 get:顾名思义               ,这个命令主要用于获取数据       ,主要有两种形式:其一是能获取整个Table数据的命令                      ,格式为“get table:#TABLE_NAME#                      ”               ,例子有:“get table:people                      ”,现在这个命令对于小的Table是非常有效的                      ,可惜对大型的Table会出现一定的问题                      ,因为这样一次性取出的数据过大,但是这个问题会在接下来的几个Patch被解决               ,因为会加入Limit这个参数                      ,来确保每次发送出来数据的大小不超过系统设定的最大值;其二是获取某一行的数据        ,也就是符合某一个Row Key的数据               ,格式为“get table:#TABLE-NAME# row:#ROW-KEY#”                      ,例子:“get table:people row:me               ”               。还有        ,但这两个命令在执行的时候       ,会自动舍去那些已经被标记为删除的数据。 del:这个命令主要用于删除数据                      ,以两种形式为主:其一是删除整行数据               ,也就是符合某一个Row Key       ,并在删除之前已经存在的数据                      ,比如有一个Row Key               ,在执行删除操作之后,它有新的数据插入                      ,那么这些新的数据将被保留                      ,格式为“del table:#TABLE-NAME# row:#ROW-KEY#                      ”,例子:“del table:people row:me       ”;其二是删除某一行某几个列数据               ,也就是在前一个命令的基础上把范围缩小到某几个列                      ,格式为“del table:#TABLE-NAME# row:#ROW-KEY# #COLUMN-NAME#…               ”        ,在ROW-KEY之后可以跟多个COLUMN-NAME               ,来代表那几个列需要被删除                      。例子有“del table:people row:me1 sex                       ”                      。 show:这个命令主要用于得到一些核心数据                      ,这样能方便今后的测试和管理        ,也主要有两种形式:其一是获取Master节点的主要信息       ,比如                      ,有哪些下属的Region节点和Table               ,命令为“show master       ”;其二是获取某个Table的主要信息       ,比如                      ,这个Table存储在那些Region节点               、在Memstore中存储了多少Item和在YFile中存储了多少ITEM等               ,格式为       ”show table:#TABLE-NAME#                       ”,例子是:“show table:people               ”。

使用流程

由于0.9版主要关注单机的实现                      ,所以本使用教程将主要关注如何在单机的情况下使用YunEngine               。

第一步:编译YunTable的源代码                      ,需要进入YunTable的目录,接着如图2所示               ,在Linux窗口中执行命令“sh build.sh       ”                      。

图2. 编译YunTable的源代码

第二步:启动Master节点                      ,如图3所示在Linux窗口中执行命令“./startMaster                      ”        ,在启动的时候               ,程序会打印出Master节点重要信息                      ,比如        ,conf文件的地址                      、更新间隔(Flushing Checking Interval       ,单位秒)        、端口号和备份数目(Duplication Number)等关键信息        。

图3. 启动Master节点

第三步:启动Region节点                      ,为了不影响之前启动的Master节点的运行               ,需要先打开一个新的Linux窗口       ,接着像图4那样在Linux窗口中执行命令“./startRegion               ”                      ,在启动的时候               ,程序也会打印出一些Region节点的关键信息,比如                      ,conf文件的地址               、更新间隔和端口号等               。

图4. 启动Region节点

第四步:启动yuncli                      ,和启动Region节点一样,需要打开一个新的Linux窗口               ,键入“./yuncli”                      ,这样能进入yuncli模式        ,在进入的时候               ,程序会打印这个yuncli对应Master节点的信息                      ,比如        ,像图5那样       ,由于之前没有给这个yuncli设置对应的Master节点                      ,所以“No Master Connection has been setup                      ”这句话被打印出来                      。

图5. 启动yuncli

第五步:Help命令               ,为了帮助初学者能够在yuncli中能够获得如何使用命令行的消息       ,程序提供“help                      ”这个命令                      ,通过这个命令               ,用户能如图6那样获知全部命令的大致作用和范例        。

图6. Help命令

第六步:设置对应的Master节点,每个yuncli都需要对应一个集群                      ,而这种对应的实现方式就是为这个yuncli设置一个Master地址                      ,比如像图7那样,输入“add master:127.0.0.1:8301”这个命令来完成Master节点的设置       。

图7. 设置Master节点

第七步:给Master节点添加Region节点               ,这样确保数据有地方可存                      。如图8所示                      ,通过输入“add region:127.0.0.1:8302               ”命令        ,能够将运行在“127.0.0.1:8302                      ”的Region加入到Master节点所管理的机器中               。

图8. 添加Region节点

第八步:创建新的Table               ,主要用于人的信息                      ,比如        ,人名和性别等       ,名字叫“people       ”       。如图9所示                      ,在yuncli中键入“add table:people               ”               ,通过这个命令能创建一个名为“people                       ”的Table                      。

图9. 创建新的Table

第九步:显示Master的主要信息       ,如图10所示                      ,通过在yuncli中键入“show master       ”这个命令来获取Master节点的主要信息               ,包括有哪些下属的Region节点和Table等               。

图10. 显示Master的主要信息。

第十步:给People这个Table添加数据,如图11所示                      ,通过输入“put table:people row:me name:"ike" sex:"male"       ”和“put table:people row:me1 name:"ikea" sex:"female"                       ”这两行命令来插入Row Key分别为“me               ”和“me1       ”的两行数据                      。

图11. 添加数据

第十一步:基于Row Key的查询                      ,如图12所示,通过输入“get table:people row:me                      ”这个命令来从“people               ”这个Table获取Row Key为“me”的数据                      。

图12. 基于Row Key的查询

第十二步:显示Table的主要信息               ,像图13那样                      ,通过输入“show table:people                      ”这个命令来获取名为                      ”people”这个Table的主要信息        ,包括这个Table存储在那些Region节点和在Memstore中存储了多少Item等。

图13. 显示Table的主要信息

第十三步:删除某一行的数据               ,如图14那样                      ,通过输入“del table:people row:me               ”这个命令删除“people                      ”这个Table里面Row Key为“me       ”的数据               。

图14. 删除某一行数据

第十四步:删除某一行某一列的数据        ,如图15那样       ,通过输入“del table:people row:me1 sex               ”这个命令删除“people                       ”这个Table中Row Key为“me       ”和Column名字为“sex       ”的数据                      。

图15. 删除某一行某一列的数据

第十五步:获取整个表的数据                      ,将如图16那样               ,输入“get table:people                       ”来获取名为“people               ”这个table所有还存在的数据       ,但由于有些数据之前已经被删除了                      ,所以还剩的数据现在非常有限        。

图16. 获取整个表的数据

第十六不:输入“quit       ”来退出yuncli               。

最后               ,希望大家如果在实际使用YunTable的时候,发现什么问题                      ,请写信到Yuntable@googlegroups.com                      ,我们整个社区会帮你及时处理的:),还有               ,如果想加入这个社区                      ,请写信给我们社区管理员Brooks(brooks.xi@gmail.com)                      。

声明:本站所有文章        ,如无特殊说明或标注               ,均为本站原创发布        。任何个人或组织                      ,在未征得本站同意时        ,禁止复制                      、盗用        、采集       、发布本站内容到任何网站                      、书籍等各类媒体平台       。如若本站内容侵犯了原著者的合法权益       ,可联系我们进行处理                      。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
安装电脑系统有多少种方法(如何安装电脑系统?有什么好的方法?) win7改win10设置(Windows 7系统如何更改系统更新设置?)