/images/avatar.jpg

添雨

记录生活、记录历史

Spark

Spark 学习笔记。Spark 的学习项目。基本上很多内容都是直接来自于官网。本项目会不断更新,以达到更合适,更简洁,更优雅地实现Spark程序等。

Greenplum

[ Pivotal Greenplum® 6.4 Documentation · Pivotal Greenplum Download · Pivotal Greenplum Command Center 6.1.0 Documentation] Pivotal Greenplum数据库是一个大规模并行处理(MPP)数据库服务器,它支持下一代数据仓库和大规模分析处理。通过自动分区数据并运行并行查询,它使服务器集群可以作为单个数据库超级计算机运行,其运行速度比传统数据库快数十倍或数百倍。 它支持SQL,MapReduce并行处理以及数据量,范围从数百GB到数百TB。 修订记录 修订日期 修订人 说明 2019-12-25 taliove 新增配置修改(gpconfig)内容 2019-12-24 taliove 新增部署的前置条件 2019-12-23 taliove 新增数据库升级流程、资源组、资源队列内存管理 2019-12-13 taliove 新增批量删除外部表的方法 2019-12-12 taliove 新增与Spark的连接 2019-12-09 taliove 新增GP的部署与日常维护等 2019-04-16 taliove 初稿 常用命令 重启GP 关机完成后重新启动。 1 gpstop -r 使配置生效 重新加载master和segment的pg_hba.

Kafka的安装与使用

[官网 | 下载 | 快速上手] 安装 执行如下命令,直接下载kafka最新版本: 官网下载地址:官网下载。有的时候由于一些原因,导致链接失效,请至官网下载。 1 2 cd /usr/local wget http://mirrors.tuna.tsinghua.edu.cn/apache/kafka/2.2.0/kafka_2.12-2.2.0.tgz & tar -zxvf kafka_2.11-2.2.0.tgz 配置config/service.properties: 1 2 3 zookeeper.connect=192.168.218.225:2181,192.168.218.231:2181,192.168.218.237:2181 listeners=PLAINTEXT://192.168.218.198:9092 advertised.listeners=PLAINTEXT://192.168.218.198:9092 注意:listeners与advertised.listeners建议加上。因为默认情况下,kafka是用hostname去查找服务器的IP。如果查找不到,或者查找到localhost等,则会导致外网连接不上。 如果没有安装zookeeper,可以使用 kafka 自带的启动即可 1 bin/zookeeper-server-start.sh -daemon config/zookeeper.properties 如果是自定义安装的java,那可能需要重新配置一下java执行环境。 配置kafka脚本执行的java环境: 1 2 3 4 vim bin/kafka-run-class.sh #在首行添加如下代码 export JAVA_HOME=/usr/local/jdk1.8.0_151 export JRE_HOME=/usr/local/jdk1.8.0_151/jre 配置服务 为kafka服务创建systemd service文件: 1 vim /etc/systemd/system/kafka.service 输入如下代码到该文件中:

自建头像缓存服务

起因 wordpress的头像加载一般是最头疼的地方。原因有三,其一是头像缓存的服务器在国外。所以国内使用的话,网络慢得可怜;其二是可以使用国内的头像缓存服务,但是指不定哪天就给关闭了;其三,我们可以直接禁用该服务,目前如果我们需要此服务的话,就只能使用默认头像。所以我想到,是不是可以自己写一个服务去缓存这些头像。就像CDN一样。 Gravatar是一图像跟随著您到访过的网站,当您在博客中留言或发表文章,它将会出现在您的名称旁。头像协助识别您在博客和论坛发表的文章,何乐而不为呢? cn.gravatar.com 当然,我们也可以直接百度一下,查找本地缓存的例子。博主也查了一下。大部分的代码都年久失修,直接拿来用是不可能的。而他们的一些例子基本上都是写在插件里面,或者functions.php里面。其实这样做也是不合理的,因为会导致页面加载时间变长。毕竟第一次载入还是有些耗时的。所以只有做成服务再加上懒加载技术,才是解决这样的问题最好的路径。 设计 基于这一诉求。我设计了如下服务流程: 用户访问页面时,使用wordpress的hook功能,拦截获取头像的方法,然后注入我们的头像服务地址。接着我们的头像服务会根据请求的查询字符串,生成一串唯一ID,并以这个ID做为文件名称,缓存至指定的路径。这就是缓存的步骤。如果该唯一ID的文件存在,则直接返回该文件即可。 所以头像的访问由原来的 https://secure.gravatar.com/avatar/8d94cb8be36f163c7a6148d4dc9a53d9?s=96&d=mm&r=g 调至 https://taliove.com/avatar/8d94cb8be36f163c7a6148d4dc9a53d9?s=96&d=mm&r=g 这两个链接只有域名不同,其它的均相同,返回的结果也一致。只不过从头像缓存主服务器同步缓存至本机而已。 动工 Let’s do it! 头像服务 在网站根目录创建一个目录wp-avatar 在该目录创建文件avatar_service.php,并拷贝以下代码至该文件 给该目录网站的权限 1 sudo chown -R nginx:nginx ./wp-avatar 我的php-fpm使用的是nginx用户名。不同的服务会不同。所以我这里使用的是nginx 修改nginx配置vim /etc/nginx/conf.d/www.taliove.com.conf,新增如下配置: 1 2 3 location /avatar { try_files $uri $uri/wp-avatar/ /wp-avatar/avatar_service.php?$args; } 修改完nginx后,重启服务systemctl restart nginx。 头像缓存服务代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 <?