spark-kafka 开发环境搭建

开发环境

  • 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.rpmsudo 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 pipsudo 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 了。

后记

希望这篇博客,对进军大数据的同学有帮助,不要死在开发环境的环节。

猜你喜欢

转载自blog.csdn.net/bluedraam_pp/article/details/80025906