1. 程式人生 > >spark-kafka 開發環境搭建

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 了。

後記

希望這篇部落格,對進軍大資料的同學有幫助,不要死在開發環境的環節。