开发环境
- Ubuntu
- pycharm
spark-kafka 环境搭建
使用 pip 下载最新的 pyspark ,不能直接链接 kafka,需下载额外的 jar 包,我遇到了好多坑。
zkpython 安装
使用公司的网络,和校园网的概念是一样的,所以 dns 有问题,在网上看到在自家的 wifi 的环境下是可以的,所以回到家里面,终于有了网,但是下载 zkpython 的时候,说缺少 zookeeper.h
这个文件,在网上查半天,最后还是使用 bing 查到了,使用下面的命令就可以下载到了 Zookeeper.h 了。
sudo apt-get install libzookeeper-mt-dev
要是在 centos 的环境下,由于 zkpython 的 setup.py 指定的 Zookeeper 的安装目录是
/usr/local/zookeeper/
下面,所以需要把 zk 安装到下面,接下来:
centos> cd /usr/local/zookeeper/src/c
centos> ./configure
centos> ./make
centos> ./make install
在安装 zkpython 就 OK 了。
MySQL-python 安装
安装这个包之前,需要安装 mysql-devel , sudo yum -y install mysql-devel
,有台服务器,先安装了 mariadb,在/ect/yum.repos.d/
有 mariadb.repo 这个包,我是把这个包,移到其他的地方,并且rpm -ivh mysql-community-release-el7-5.noarch.rpm
, sudo pip install MySQL-python
才 ok。搞了一下午,TMD。
pyspark 安装
在安装的过程中,遇到以下几个问题:
timeout
。这是因为我下载的是 pyspark2.3 的原因,其实不应出现这种问题的,但是当我下载 2.2.1 的时候就可以了,也有可能是 pip 的版本问题,我升级到了 8.1.2 安装 pyspark2.2.1,一切 OK 了。AttributeError: 'module' object has no attribute 'main'
。这是我把 pip 升级到 10.0.1 以后出现的问题,这个问题非常的坑啊,所以升级有风险,要慎重。我最后是,进入到/usr/local/lib/python2.7/dist-packages
,里面把pip-10.0.1.dist-info/
,pip
的目录删掉,sudo apt-get remove pip
、sudo apt-get install pip
,再到 pycharm 里面升级的 pip 到 8.1.2 才好的。所以比较坑爹啊
jar 的问题
pyspark 安装好以后,需要在/usr/local/lib/python2.7/disk-package/pyspark/jars/
中,添加如下的 jar 包
- hadoop-client-2.6.5
- kafka_2.11-0.8.2.0
- kafka-clients-0.8.2.0
- metrics-core-2.2.0
- scala-logging_2.11-3.7.1
- spark-streaming-kafka-0-8_2.11-2.2.1
- zkclient-0.7
后续遇到的问题
以直连的方式链接 kafka,保Couldn't find leaders for Set(topicname,0)
,昨天还没有问题呢,今天就这样了,后来查了一下度娘,好多人都说是num.replica.fechers
参数设置的过小造成的。我设置了这个参数,但是还是不行,只好再接着找了,在百度的下面几行,我发现,需要配置 kafka 集群的 host 地址,我试了试,居然成功了。真 fc 了。
json 模块有两个方法,分别是 load 和 loads ,前者是从文件里面加载,后者是从内存里面加载。load 需要的参数是一个文件句柄,例如,file = open(“file_path”,’w’),所以 Python 的语法带来的便捷性,是以对数据结构的熟悉程度为代价的。
今天向 spark 提交 pyspark 的任务,并且使用了 python3 的虚拟环境,但是报出没有访问权限的
错误,如下
java.io.IOException: Cannot run program "/your_path/py3.5_env/bin/python": error=13, Permission denied
经过一番百度,使用 chmod 777 py3.5_env,还是没有解决问题,最后还是使用 bing 查到的,还是在一个国外的网站找到的,最后,我是对每一级的目录进行了chown my_user:my_group
操作,保重目录归属于你登陆的用户,然后使用chmod 775
把虚拟环境的每一级目录的权限修改。然后就 OK 了。
后记
希望这篇博客,对进军大数据的同学有帮助,不要死在开发环境的环节。