ottertune安装实验

1. https://github.com/cmu-db/ottertune/wiki/Linux-Quick-Setup

2. ubuntu安装mysql

https://www.linuxidc.com/Linux/2017-06/144805.htm

3.

  1. 创建数据库     在OtterTune服务器端,它需要一个数据库来存储所有网站数据。 您可能想在MySQL中创建一个数据库(如果它尚不存在)。
    mysqladmin create -u <username> -p ottertune
        它在MySQL中创建了一个名为ottertune的数据库。 创建数据库后,需要更新Django设置中的数据库信息,包括数据库名称,用户名和密码。
  2. 更新Django设置复制设置目录中的凭据模板:
    cp website/settings/credentials_TEMPLATE.py website/settings/credentials.py
    编辑credentials.py,更新密钥,MySQL数据库信息并设置DEBUG标志。
  3. 提供静态文件

    如果您不使用该网站进行生产,只需在credentials.py中设置DEBUG = True即可。 然后Django将自动处理静态文件。

    这不是一种有效的生产方式。 您需要配置其他服务器(如Apache)以在生产环境中提供静态文件。 (细节)
  4. 启动网站服务器

    首先,您需要将Django模型迁移到数据库中。
    python3 manage.py makemigrations website
    python3 manage.py migrate
                                                  加载数据库后,您可以启动服务器:
    python3 manage.py runserver 0.0.0.0:8000
    然后,您可以从浏览器访问OtterTune网站。 转到server_ip:8000。 如果您在本地部署网站,则可以访问127.0.0.1:8000查看该网站。5. Start the Celery
  5. Start the Celery  OtterTune使用Celery来安排机器学习任务。 在盯着芹菜工人之前,您可能想要开始芹菜所需的消息经纪人。 在我们的例子中,我们使用RabbitMq。
sudo rabbitmq-server -detached

Then you can start the celery worker:

python3 manage.py celery worker --loglevel=info --pool=threads

OtterTune具有定期ML任务(即旋钮识别和度量修剪),每个时间段都运行。 您可以使用celerybeat来开始定期任务。

python3 manage.py celerybeat --verbosity=2 --loglevel=info 

3. 客户端

  1. 1 - 驱动程序首先清除缓存并重新启动数据库。它还检查磁盘使用率是否超过最大使用量(用户定义的阈值)。如果是这样,驱动程序将删除实验数据库并重新加载基准测试以确保有足够的空间来执行实验,并且控制器可以收集DBMS旋钮和度量数据。
  2.  2 - 然后驱动程序将oltpbenchmark作为后台作业运行。 oltpbenchmark是关系数据库的基准套件(https://github.com/oltpbenchmar / oltpbench)。当基准测试准备开始测量时,驱动程序向控制器发送信号以启动实验并等待基准测试完成。实验观察时间的长度在基准配置文件中定义。
  3.  3 - 控制器首先在观察之前收集旋钮和度量数据。然后等待,直到司机发出另一个信号。
  4.  4 - 在oltpbenchmark完成测量后,驱动程序向控制器发送终止信号。在接收到信号后,控制器再次收集度量数据。控制器将所有收集的旋钮和度量数据以及元数据摘要(即数据库名称和版本,观察长度,开始/结束时间,工作负载名称)格式化为json文件,并将这些文件发送回驱动程序。
  5.  5 - 驱动程序将控制器收集的所有DBMS数据上载到服务器。驱动程序将从服务器接收唯一令牌,并使用令牌定期检查服务器是否已完成推荐的新配置。
  6.  6 - 如果服务器已成功生成下一个配置,则驱动程序将从服务器查询新配置并将其安装到数据库。
  • 控制器配置:示例配置文件位于ottertune / client / controller / config /目录下。您需要更新文件中的信息。目前您不需要关心控制器配置文件中的upload_code和upload_url,因为驱动程序将处理上传结果到服务器,您将在驱动程序配置文件中设置它们。要指定控制器配置的路径,您可能需要在驱动程序配置中更改controller_config。
  • 驱动配置:驱动程序配置文件位于ottertune / client / driver / driver_config.json。它包括您的数据库信息,oltpbench信息和控制器信息。 upload_url是OtterTune服务器网站的url,upload_code在服务器网站的每个会话中都是唯一的。您可以设置save_path以保存每个试用循环的目标DBMS的收集信息。
  • OLTP-Bench配置:目前我们使用oltpbench在观察期内运行工作负载(默认为5分钟)。您可以更改OLTP-Bench配置以更新工作负载信息。可以在驱动程序配置中的oltpbench_config中指定路径。
  • 运行循环:设置上述三个配置后,您可以在上面的描述中运行循环。在每个循环中,它收集目标DBMS信息,上传到服务器,获取新的推荐配置,安装配置并重新启动DBMS。用户可以继续运行循环,直到他们对推荐的配置满意为止。函数在驱动程序文件ottertune / client / driver / fabfile.py中定义fab循环运行一个循环。 fab run_loops:max_iter = 10运行10个循环。您可以设置max_iter以更改最大迭代次数。

4. 服务端

        OtterTune服务器负责处理和存储调优数据,调度作业以计算OtterTune的ML模型并提出配置建议,并在其前端Web界面中可视化每个调优会话的结果。 调优管理器是使用Django Web框架用Python编写的。 我们将MySQL数据库用于Django后端数据库。 我们使用Celery来安排和执行创建OtterTune ML模型和推荐新配置的任务。 Celery是一个任务队列和调度程序,易于与Django等Web框架集成。 我们使用Python的scikit-learn和Google TensorFlow实现了所有OtterTune的ML模型。

        服务器接收调整任务以及来自客户端的收集数据(如旋钮和指标)。它解析数据并将它们存储在数据存储库中。然后,Celery将安排并运行ML任务以推荐客户端的新配置。

        OtterTune首先将数据传递给Workload Characterization组件。该组件标识了一组较小的DBMS指标,可以最好地捕获性能的可变性以及不同工作负载的区别特征。接下来,旋钮识别组件生成最能影响DBMS性能的旋钮的排序列表。然后OtterTune将所有这些信息提供给自动调谐器。最后一个组件将目标DBMS的工作负载映射到其数据存储库中最相似的工作负载,并重用此工作负载数据以生成更好的配置。

         工作负载表征和旋钮识别是定期执行的周期性任务(例如,每20分钟),他们的结果(排名旋钮和非冗余度量)可能会改变,因为训练数据可能会在每个时间段增长。每次收到调整任务以推荐客户端配置时,都会执行自动推荐步骤。

        要启动这些ML任务,您可能需要启动Celery所需的消息代理(如RabbitMq),并运行Celery worker。

sudo rabbitmq-server -detached
python3 manage.py celery worker --loglevel=info --pool=threads

我们使用Celery beat来运行定期任务。

python3 manage.py celerybeat --verbosity = 2 --loglevel = infoCelery

将安排自动推荐任务在收到调整任务时运行。 在自动建议步骤中,它需要来自工作负载表征和旋钮识别的排序旋钮和非冗余度量。 因此,在使用Celery beat之前,请确保已经执行了这些定期任务。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值