码农故事


  • 首页

  • 关于

  • 标签

  • 归档

ElasticSearch及其插件安装

发表于 2017-09-27

ElasticSearch,强大的数据搜索应用,可以当成数据库来使用,接下来演示如何安装和安装它的插件。

安装Elasticsearch

  1. 安装Java
    Java安装就不多说了,记得安装完后设置JAVA_HOME环境变量,我使用的1.8版本。
  2. 下载
    从 https://www.elastic.co/downloads/elasticsearch 下载最新版本,解压,假设elasticsearch解压后的根目录为$ES_HOME。
  3. 修改配置
    配置文件在 $ES_HOME/config/elasticsearch.yml,设置基本的集群名称,节点名称,和网络监听地址:

    1
    2
    3
    cluster.name: myes
    node.name: n1
    network.host: 0.0.0.0
  4. 运行
    进入$ES_HOME/bin目录,执行elasticsearch即可。

阅读全文 »

tar解压冲掉软连接后恢复CentOS系统

发表于 2017-09-21

问题来源

tar解压文件,如果你的源目录是一个文件夹,目标地址有一个相同名字的文件夹(但它其实是一个软连接),那么目标地址里面的那个软连接会修改为你的源目录文件夹,而非从源目录里面将内容拷贝到目标软连接下面。

例如,你有一个tar.gz压缩的安装包libedit.tar.gz
里面内容为:

1
2
./lib64/libedit.so.0.0.42
./lib64/libedit.so.2 -> libedit.so.0

现在我们使用:

1
tar -zxvf libedit.tar.gz -C /

解压到根目录。

阅读全文 »

ElasticSearch Python Client ReadTimeout

发表于 2017-09-21

异常

ElasticSearch Python Client API,Bulk操作时,当ElasticSearch服务端的性能不足时,Client可能会超时,打印类似异常:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2017-09-27 12:37:42.228 25934/MainThread W base.py:96 POST http://localhost:9200/_bulk [status:N/A request:10.011s]
Traceback (most recent call last):
File "build/bdist.linux-x86_64/egg/elasticsearch/connection/http_urllib3.py", line 114, in perform_request
response = self.pool.urlopen(method, url, body, retries=False, headers=self.headers, **kw)
File "/home/fantom/share/Python-2.7/lib/site-packages/urllib3-1.21.1-py2.7.egg/urllib3/connectionpool.py", line 649, in urlopen
_stacktrace=sys.exc_info()[2])
File "/home/fantom/share/Python-2.7/lib/site-packages/urllib3-1.21.1-py2.7.egg/urllib3/util/retry.py", line 333, in increment
raise six.reraise(type(error), error, _stacktrace)
File "/home/fantom/share/Python-2.7/lib/site-packages/urllib3-1.21.1-py2.7.egg/urllib3/connectionpool.py", line 600, in urlopen
chunked=chunked)
File "/home/fantom/share/Python-2.7/lib/site-packages/urllib3-1.21.1-py2.7.egg/urllib3/connectionpool.py", line 388, in _make_request
self._raise_timeout(err=e, url=url, timeout_value=read_timeout)
File "/home/fantom/share/Python-2.7/lib/site-packages/urllib3-1.21.1-py2.7.egg/urllib3/connectionpool.py", line 308, in _raise_timeout
raise ReadTimeoutError(self, url, "Read timed out. (read timeout=%s)" % timeout_value)
ReadTimeoutError: HTTPConnectionPool(host='localhost', port=9200): Read timed out. (read timeout=10)

简单的解决方法是加入timeout和重试相关参数(参考:https://stackoverflow.com/questions/25908484/how-to-fix-read-timed-out-in-elasticsearch)

阅读全文 »

Python多进程并行函数对比

发表于 2017-09-15

Python因为解释器本身实现的比较挫(是的,就是代码写得挫),有一个GLI(Global Interpreter Lock)锁,导致多线程基本上是一个人装出来的几个分身,所以如果要并行,推荐使用多进程,有multiprocessing库,封装的还算简洁,但是毫无疑问,多进程通信成本会比多线程高一些。但是,有什么办法?用Python你还在乎性能?

别人在不在乎,我是不知道,反正最近我们有个模块是非常在乎,用Python是因为历史原因和现实原因,有本事换成Go,你得问问那一大堆支撑库答应不答应。

Python多进程并行,可调用map和apply,两个函数都有对应的ansy版本,ansy版本返回的是Result对象,此对象可用于后面等待结果。

并行功能比较适合那些执行之间不存在时间依赖(可能后传人的会先执行)或者结果依赖(后面的执行依赖前面的输出状态)的模块。

异步功能比较适合后续代码的执行不需要依赖当前步骤执行结果的模块,比如插入一条数据到数据库,插入过程比较耗时,可以异步执行,我的主进程可以继续执行处理构造下一条数据的工作。

阅读全文 »

使用PyCharm Profile Python性能

发表于 2017-09-14

好的武器可以事半功倍。

所以,我们定位Python模块性能,不需要绕弯子,直接用PyCharm自带的Profiles功能即可。

本地Profile

本地运行的Python代码,Profile就和Debug一样简单,具体操作是:

  1. 工具栏上,点击”Profile ‘your project’”
  2. 在Run窗口里面,导航按钮上有一个软盘的图标,是用来保存profile信息的,手动点击一下,会更新你当前的profile stats窗口数据(或者在新窗口展现),同时在Run窗口会输出pstat文件保存的位置,例如:
    Snapshot saved to /tmp/LogTransfer7.pstat
  3. 如果profile stats窗口不小心关闭了,可以通过tools->Open CProfile snapshot打开一个pstat文件,比如刚才保存的。
阅读全文 »

利用SWIG帮助Python调用C模块

发表于 2017-09-11

我并不是写一个SWIG的介绍,而是记录之前的用法,以供后续查阅(更重视后续能快速复制粘贴,而不是原理介绍)。SWIG的内容,最好看文档: http://www.swig.org/Doc3.0/SWIGDocumentation.html

SWIG封装Python,需要链接Python的库文件和包含Python的头文件,可以通过命令安装,我是新编译的一个Python。

阅读全文 »

文件的access time

发表于 2017-08-09

三种文件时间

文件时间有三种,分别为:

  1. Access - the last time the file was read 读文件会造成修改
    st_atime

    Time when file data was last accessed. Changed by  the
    following   functions: creat(),   mknod(),   pipe(), utime(2), and read(2).
    
  2. Modify - the last time the file was modified (content has been modified) 写文件会造成修改
    st_mtime

    Time when data was last modified. Changed by the  following  functions:  creat(), mknod(), pipe(), utime(), and write(2).
    
  3. Change - the last time meta data of the file was changed (e.g. permissions) - 写文件或者修改属性或造成修改
    st_ctime

    Time when file status was last changed. time of last modification of file  status  information.Changed by the
    following   functions:   chmod(),   chown(),  creat(),
    link(2),  mknod(),  pipe(),  unlink(2),  utime(), and write().
    
阅读全文 »

阿里云上CentOS 6.x安装Docker

发表于 2017-08-01

我在阿里云上托管的一台服务器,CentOS版本比较老,要安装docker,版本太低CentOS 6.5不行,所以先升级到CentOS 6.9,过程比较曲折,反正最后是升级成功了:

1
2
[ayserver ~]# cat /etc/issue
CentOS release 6.9 (Final)

关键是内核版本,现在是2.6.32,已经符合安装docker的条件:

1
2
[ayserver ~]# uname -a
Linux ayserver 2.6.32-696.6.3.el6.x86_64

阅读全文 »

IPTABLES基础命令

发表于 2017-07-17

本文主要参考 http://www.iptables.info 和 http://www.zsythink.net/archives/tag/iptables/ 不是详细的原理介绍,权当个人记录的操作笔记。

基本概念

借个图看一下,这个图很熟悉了,正是netfilter框架的hook point:

阅读全文 »

为Docker配置MACVLAN网络

发表于 2017-07-17

MACVLAN模式

MACVLAN有四种模式,分别是Bridge(默认),Private,VEPA(Virtual Ethernet Port Aggregator),Passthru。
这些类型的区别,网上比较多,不细说,我只配置默认的Bridge模式。

阅读全文 »
1234…6

mnstory.net

58 日志
69 标签
© 2019 mnstory.net