由于技術(shù)棧的更新,原來的centos 的配置 還是 稍微 淺顯,現(xiàn)在要照顧到C++ java scala python R golang nodejs shell 這些常用的語言和諧相處,又要把所有的環(huán)境配置到更穩(wěn)定 更合適部署 開發(fā)的環(huán)境
首先要確定的就是 我們的服務(wù)要做的就是 要使用 集群的cdh 的hadoop spark hbase hive ,及 sqoop mysql tensorflow xgboost neo4j sklearn pyspark pandas
yum -y groupinstall "Development tools"
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
yum install cyrus-sasl-lib.x86_64 cyrus-sasl-devel.x86_64 libgsasl-devel.x86_64 saslwrapper-devel.x86_64
sudo yum install mpich mpich-devel
yum install lrzsz ##方便使用 rz sz 命令
yum install nc
yum install telnet
yum install tmux
sudo yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel
rpm -qa | grep mariadb
rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64
sudo rpm -Uvh [http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm](http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm)
sudo yum install mysql-server # 安裝 mysql 這里也有坑 建議大家看我之前寫的 mysql 安裝教程
yum install mysql-connector-java #centos 7 安裝 mysql-connector-java.noarch 1:5.1.25-3.el7
#默認(rèn) mysql-connector-java 會(huì)再次 安裝 jdk6 ,一定要卸載 jdk 6 否則未來啟動(dòng)會(huì)報(bào)錯(cuò) 【Caused by: java.lang.UnsupportedClassVersionError: com/mysql/jdbc/Driver : Unsupported major.minor version 51.0】
yum list jdk # jdk.x86_64 2000:1.6.0_31-fcs
yum remove jdk #刪除jdk6
sudo yum install gcc # C 編譯器
sudo yum install gcc-c++ # C++ 編譯器
sudo yum install gcc-gfortran # Fortran 編譯器
sudo yum install compat-gcc-44 # 兼容 gcc 4.4
sudo yum install compat-gcc-44-c++ # 兼容 gcc-c++ 4.4
sudo yum install compat-gcc-44-gfortran # 兼容 gcc-fortran 4.4
sudo yum install compat-libf2c-34 # g77 3.4.x 兼容庫
首先 centos7 默認(rèn)安裝的python2.7,我們現(xiàn)在要 升級(jí)到python3.6,
參考
http://www.itdecent.cn/p/8929bba0bed5
cd /opt/
wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tar.xz
mkdir /usr/local/python3
tar -xvJf Python-3.6.2.tar.xz -C /usr/local/python3
cd /usr/local/python3/Python-3.6.2
./configure --prefix=/usr/local/python3
make && make install
ln -s /usr/local/python3/bin/python3 /usr/local/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/local/bin/pip3
ln -s /usr/local/bin/pip3 /usr/bin/pip
pip3 install --upgrade pip
pip install ipython ptpython
#需要注意的是 ptpython 需要設(shè)置到 PATH的環(huán)境變量中
/usr/local/python3/bin/ptipython
/usr/local/python3/bin/ptipython3
/usr/local/python3/bin/ptpython
/usr/local/python3/bin/ptpython3
vi /etc/profile
export PT_HOME=/usr/local/python3
export MPI_HOME=/usr/lib64/openmpi # mpi要用到
export MPICH_HOME=/usr/lib64/mpich
export PATH=$PATH:$PT_HOME/bin:$MPI_HOME/bin:$MPICH_HOME/bin
esc : wq
source /etc/profile
需要注意的是 cdh 5.13 的spark 是1.6版本 ,spark 低于 2.1 版本的 pyspark 是不支持 python3.6 的,最高支持 python 3.5,所以 折中的方法是安裝 anaconda
或者建議上一步 安裝 python 3.5.4 代替 Python-3.6.2
wget https://www.python.org/ftp/python/3.5.4/Python-3.5.4.tgz
Spark 2.1.0 doesn't support python 3.6.0. To solve this change your python version in anaconda environment. Run following command in your anaconda env
cd /opt
wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-5.1.0-Linux-x86_64.sh
bash Anaconda3-5.1.0-Linux-x86_64.sh
#一路回車 yes 安裝即可
which python2.7
/usr/bin/python2.7
vi /etc/profile
export PATH=/root/anaconda3/bin:$PATH
export PYSPARK_DRIVER_PYTHON=/usr/bin/python2.7
# /etc/profile /root/.bashrc
source /etc/profile
conda create -n py35 python=3.5 anaconda # 創(chuàng)建 python 3.5環(huán)境
source activate py35 # 激活 python 3.5環(huán)境
conda install py-xgboost
jupyter notebook --generate-config
export PYSPARK_DRIVER_PYTHON=/usr/bin/python2.7
# 可以把這個(gè)追加到 /etc/profile
source /etc/profile
之后再安裝下面的這些包 涵蓋 機(jī)器學(xué)習(xí) ETL 計(jì)算機(jī)視覺 自然語言處理 運(yùn)維
大數(shù)據(jù) 云計(jì)算 并發(fā)
pip3 install numpy scipy spacy mpi4py pandas xgboost tensorflow scikit-learn sklearn-pandas Scrapy PyHive sasl thrift thrift-sasl tornado virtualenv
pip3 install Keras hdfs scrapy-redis ScalaFunctional PyQt5 pyOpenSSL Pillow paramiko matplotlib mpld3 jieba nltk graphviz bokeh
pip3 install Django click apache-libcloud scrapyd opencv-python opencv-contrib-python pymongo h5py gym djangorestframework imageio
djangorestframework-csv ibis-framework pdhbase happybase plac pytest
pip3 install seaborn setuptools sparkdl tensorframes ssh-jump-hive zmail Werkzeug xlrd xlwt pymysql SQLAlchemy redis pyarrow fastparquet hdfs3
aiosmtplib asyncio
#或者 一次到位 注意 如果某個(gè)包錯(cuò)誤 會(huì)引起中斷,從哪里斷 就從后面 繼續(xù)安裝即可,mpi4py安裝需要先 安裝 yum 安裝 openmpi mpich 并配置好環(huán)境變量
pip3 install numpy scipy spacy pandas xgboost tensorflow scikit-learn sklearn-pandas Scrapy PyHive sasl thrift thrift-sasl tornado virtualenv Keras hdfs scrapy-redis ScalaFunctional PyQt5 pyOpenSSL Pillow paramiko matplotlib mpld3 jieba nltk graphviz bokeh Django click apache-libcloud scrapyd opencv-python opencv-contrib-python pymongo h5py gym djangorestframework djangorestframework-csv seaborn setuptools sparkdl tensorframes ssh-jump-hive Werkzeug xlrd xlwt pymysql SQLAlchemy redis pyarrow fastparquet hdfs3 pdhbase happybase zmail neo4j-driver networkx imageio netaddr colorama colorcet coverage plac pytest
pip3 install PyGame Pydot CherryPy pexpect fabric psutil dnspython IPy
Polyglot TextBlob Quepy mpi4py aiosmtplib asyncio itchat wxpy
mrjob 0.6.4 可能需要單獨(dú) source 安裝,主要是 pip 安裝的無法引用
git clone https://github.com/Yelp/mrjob.git
cd mrjob
vi setup.py
dd 'google-cloud-storage>=1.9.0', ## 刪除這個(gè) 引用依賴,有問題
esc : wq
python setup.py install
#剩下的 這些 都是python 2.7的 不建議安裝
#PySQLite PIL LibSVM VLFeat Python-graph Yorserver smtplib PyNLPI MontyLingua Pattern
#pip uninstall ibis-framework
#pip install enum34 funcsigs functools32 ibis-framework
升級(jí) python 會(huì)造成 yum 無法使用 ,yum 依賴的是python 2.7,解決方法是
#使用yum命令報(bào)錯(cuò)File "/usr/bin/yum", line 30 except KeyboardInterrupt,
問題出現(xiàn)原因:
yum包管理是使用python2.x寫的,將python2.x升級(jí)到python3.1.3以后,由于python版本語法兼容性導(dǎo)致問題出現(xiàn)
解決辦法:
修改yum配置文件,將python版本指向以前的舊版本
# vi /usr/bin/yum
#!/usr/bin/python2.7
修改urlgrabber-ext-down文件,更改python版本
# vi /usr/libexec/urlgrabber-ext-down
#!/usr/bin/python2.7
另外 在使用pyhive 操作 hive 時(shí) 需要 使用到 thrift 和sasl ,直接 安裝 sasl 會(huì)爆 【 sasl/saslwrapper.h:22:23: 致命錯(cuò)誤:sasl/sasl.h:沒有那個(gè)文件或目錄】
解決方法
yum install cyrus-sasl-lib.x86_64
yum install cyrus-sasl-devel.x86_64
yum install libgsasl-devel.x86_64
yum install saslwrapper-devel.x86_64
一般拉說前面三句基本能解決問題,第四句留著實(shí)在沒辦法時(shí)用。
操作了這些在 pip install sasl 才不會(huì)報(bào)錯(cuò)
centos 默認(rèn)安裝的 openjdk 7,可以升級(jí)到 openjdk8
centos 安裝 cdh 可以參考我之前寫的
cdh 默認(rèn)安裝的是 spark 1.6
為此我們要升級(jí)cdh 的spark 到 2.3
https://www.cloudera.com/documentation/spark2/latest/topics/spark2_packaging.html#packaging
http://archive.cloudera.com/spark2/parcels/2.3.0.cloudera2/
wget http://archive.cloudera.com/spark2/csd/SPARK2_ON_YARN-2.3.0.cloudera2.jar
wget http://archive.cloudera.com/spark2/parcels/2.3.0.cloudera2/SPARK2-2.3.0.cloudera2-1.cdh5.13.3.p0.316101-el7.parcel
wget http://archive.cloudera.com/spark2/parcels/2.3.0.cloudera2/SPARK2-2.3.0.cloudera2-1.cdh5.13.3.p0.316101-el7.parcel.sha1
wget http://archive.cloudera.com/spark2/parcels/2.3.0.cloudera2/manifest.json
一 、[下載](https://www.cloudera.com/documentation/spark2/latest/topics/spark2_packaging.html#packaging)
SPARK2_ON_YARN-2.2.0.cloudera1.jar
SPARK2-2.2.0.cloudera1-1.cdh5.12.0.p0.142354-el6.parcel
SPARK2-2.2.0.cloudera1-1.cdh5.12.0.p0.142354-el6.parcel.sha
manifest.json
二、準(zhǔn)備
1、將SPARK2_ON_YARN-2.2.0.cloudera1.jar上傳至/opt/cloudera/csd目錄
**注:要保證集群的本地描述符存儲(chǔ)庫路徑是/opt/cloudera/csd**
查看方式:CM主界面管理–>設(shè)置–>類別(本地描述符存儲(chǔ)庫路徑)
2、將
SPARK2-2.2.0.cloudera1-1.cdh5.12.0.p0.142354-el6.parcel
SPARK2-2.2.0.cloudera1-1.cdh5.12.0.p0.142354-el6.parcel.sha
manifest.json
上傳至/var/www/html/spark2目錄下,且保證http能夠訪問。
3、重啟cloudera-scm-server 服務(wù)
service cloudera-scm-server restart
1
成功后進(jìn)入CM界面,在添加服務(wù)里面會(huì)看到spark2的按鈕。
三、安裝parcels
1、主機(jī)–>parcels–>配置–>填寫url–>檢查新的parcel
2、下載–>分配—>激活
四、添加服務(wù)
1、點(diǎn)擊集群按鈕旁的添加服務(wù)
2、選擇spark2 –>繼續(xù)
3、選擇依賴
4、角色分配(Gateway所有主機(jī)都要安裝)
5、啟動(dòng)
spark2中默認(rèn)使用的是python2,可以通過以下三種方式之一使用python3:
PYSPARK_PYTHON=python3 pyspark2
修改~/.bash_profile,增加 PYSPARK_PYTHON=python3
修改spark-env.sh增加PYSPARK_PYTHON=/usr/local/bin/python3
參考
https://liupzmin.com/
https://blog.csdn.net/ccy521520/article/details/52131999
https://blog.csdn.net/Gavin_chun/article/details/78554277
https://blog.csdn.net/u010936936/article/details/73650417
https://blog.csdn.net/lsshlsw/article/details/49155087
解決在編程方式下無法訪問Spark Master問題
http://ju.outofmemory.cn/entry/162428
http://www.itdecent.cn/p/e00e7c65bb08
,集群要配置 ssh免登陸
安裝scala 2.10.7 為了和 cdh 的spark 配合
wget https://downloads.lightbend.com/scala/2.10.7/scala-2.10.7.rpm
rpm -ivh scala-2.10.7.rpm
安裝 neo4j 企業(yè)版 集群 配置 參考我上一篇
安裝 maven tomcat 等等 ,
wget http://mirrors.shu.edu.cn/apache/maven/maven-3/3.5.3/binaries/apache-maven-3.5.3-bin.tar.gz
wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-9/v9.0.8/bin/apache-tomcat-9.0.8.tar.gz
安裝 sbt [scala]
wget https://sbt-downloads.cdnedge.bluemix.net/releases/v1.1.5/sbt-1.1.5.tgz
安裝 zeppelin
http://mirrors.hust.edu.cn/apache/zeppelin/zeppelin-0.7.3/zeppelin-0.7.3-bin-all.tgz
并行計(jì)算
并行可以用 openmpi,也可以用 mpich,二者的功能可以認(rèn)為是完全相同的。由于二者提供了幾乎一樣的命令, 所以二者可以同時(shí)安裝,但是不可以同時(shí)處于使用狀態(tài)。
openmpi
安裝 openmpi:
sudo yum install openmpi openmpi-devel
sudo yum install mpich mpich-devel
安裝后,二進(jìn)制文件位于 /usr/lib64/openmpi/bin 下,動(dòng)態(tài)庫文件位于 /usr/lib64/openmpi/lib 下,因而實(shí)際使用的話還需要額外的配置,在 .bashrc 中加入如下語句:
export PATH=/usr/lib64/openmpi/bin/:${PATH}
module load mpi/openmpi-x86_64
PS:要使用 module 命令需要先安裝 environment-modules 包。
mpich
安裝 mpich:
sudo yum install mpich mpich-devel
安裝后,二進(jìn)制文件位于 /usr/lib64/mpich/bin 下,動(dòng)態(tài)庫文件位于 /usr/lib64/mpich/lib 下, 因而實(shí)際使用的話還需要額外的配置,在 .bashrc 中加入如下語句:
export PATH=/usr/lib64/mpich/bin/:${PATH}
module load mpi/mpich-x86_64
<1>配置環(huán)境,通過遠(yuǎn)程方式訪問jupyter notebook
jupyter notebook --generate-config
會(huì)出現(xiàn)一個(gè)配置文件的路徑(注意)
<2>生成登陸密碼,為了云主機(jī)的安全
進(jìn)入python
1.from notebook.auth import passwd
passwd()
Enter password:
Verify password:
3會(huì)輸出加密后的密碼(記得保存),例如:
'sha1:5311cd8b9da9:70dd3321fc7e66080a5d3d943ab9752b4'
4.exit()
<3>修改<1>生成的配置文件,將以下地址修改如下:
vi ~/.jupyter/jupyter_notebook_config.py (對(duì)應(yīng)你的路徑)
c.NotebookApp.ip='*'
c.NotebookApp.password = u'你保存的密碼'
c.NotebookApp.open_browser = False
c.NotebookApp.port =8888 #隨便指定一個(gè)端口,使用默認(rèn)8888也可以
<4>啟動(dòng)Jupyter服務(wù)
命令行下開啟服務(wù):
jupyter notebook --ip=0.0.0.0 --no-browser --allow-root
<5>瀏覽器訪問,并輸入密碼
http://服務(wù)器地址:端口號(hào)
參考
鏈接:http://www.itdecent.cn/p/8c73bb39dc2e
https://spacy.io/
https://blog.csdn.net/flyfrommath/article/details/78652339
http://hanlp.linrunsoft.com/
mpi
https://www.cnblogs.com/sos-blue/p/6412112.html
http://mpi4py.readthedocs.io/en/stable/tutorial.html