由于技术栈的更新,原来的centos 的配置 还是 稍微 浅显,现在要照顾到C++ java scala python R golang nodejs shell 这些常用的语言和谐相处,又要把所有的环境配置到更稳定 更合适部署 开发的环境
首先要确定的就是 我们的服务要做的就是 要使用 集群的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
#默认 mysql-connector-java 会再次 安装 jdk6 ,一定要卸载 jdk 6 否则未来启动会报错 【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 默认安装的python2.7,我们现在要 升级到python3.6,
参考
https://www.jianshu.com/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 需要设置到 PATH的环境变量中
/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 # 创建 python 3.5环境
source activate py35 # 激活 python 3.5环境
conda install py-xgboost
jupyter notebook --generate-config
export PYSPARK_DRIVER_PYTHON=/usr/bin/python2.7
# 可以把这个追加到 /etc/profile
source /etc/profile
之后再安装下面的这些包 涵盖 机器学习 ETL 计算机视觉 自然语言处理 运维
大数据 云计算 并发
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
#或者 一次到位 注意 如果某个包错误 会引起中断,从哪里断 就从后面 继续安装即可,mpi4py安装需要先 安装 yum 安装 openmpi mpich 并配置好环境变量
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 可能需要单独 source 安装,主要是 pip 安装的无法引用
git clone https://github.com/Yelp/mrjob.git
cd mrjob
vi setup.py
dd 'google-cloud-storage>=1.9.0', ## 删除这个 引用依赖,有问题
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
升级 python 会造成 yum 无法使用 ,yum 依赖的是python 2.7,解决方法是
#使用yum命令报错File "/usr/bin/yum", line 30 except KeyboardInterrupt,
问题出现原因:
yum包管理是使用python2.x写的,将python2.x升级到python3.1.3以后,由于python版本语法兼容性导致问题出现
解决办法:
修改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 时 需要 使用到 thrift 和sasl ,直接 安装 sasl 会爆 【 sasl/saslwrapper.h:22:23: 致命错误:sasl/sasl.h:没有那个文件或目录】
解决方法
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
一般拉说前面三句基本能解决问题,第四句留着实在没办法时用。
操作了这些在 pip install sasl 才不会报错
centos 默认安装的 openjdk 7,可以升级到 openjdk8
centos 安装 cdh 可以参考我之前写的
cdh 默认安装的是 spark 1.6
为此我们要升级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
二、准备
1、将SPARK2_ON_YARN-2.2.0.cloudera1.jar上传至/opt/cloudera/csd目录
**注:要保证集群的本地描述符存储库路径是/opt/cloudera/csd**
查看方式:CM主界面管理–>设置–>类别(本地描述符存储库路径)
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 服务
service cloudera-scm-server restart
1
成功后进入CM界面,在添加服务里面会看到spark2的按钮。
三、安装parcels
1、主机–>parcels–>配置–>填写url–>检查新的parcel
2、下载–>分配—>激活
四、添加服务
1、点击集群按钮旁的添加服务
2、选择spark2 –>继续
3、选择依赖
4、角色分配(Gateway所有主机都要安装)
5、启动
spark2中默认使用的是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
https://www.jianshu.com/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 企业版 集群 配置 参考我上一篇
安装 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
并行计算
并行可以用 openmpi,也可以用 mpich,二者的功能可以认为是完全相同的。由于二者提供了几乎一样的命令, 所以二者可以同时安装,但是不可以同时处于使用状态。
openmpi
安装 openmpi:
sudo yum install openmpi openmpi-devel
sudo yum install mpich mpich-devel
安装后,二进制文件位于 /usr/lib64/openmpi/bin 下,动态库文件位于 /usr/lib64/openmpi/lib 下,因而实际使用的话还需要额外的配置,在 .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
安装后,二进制文件位于 /usr/lib64/mpich/bin 下,动态库文件位于 /usr/lib64/mpich/lib 下, 因而实际使用的话还需要额外的配置,在 .bashrc 中加入如下语句:
export PATH=/usr/lib64/mpich/bin/:${PATH}
module load mpi/mpich-x86_64
<1>配置环境,通过远程方式访问jupyter notebook
jupyter notebook --generate-config
会出现一个配置文件的路径(注意)
<2>生成登陆密码,为了云主机的安全
进入python
1.from notebook.auth import passwd
passwd()
Enter password:
Verify password:
3会输出加密后的密码(记得保存),例如:
'sha1:5311cd8b9da9:70dd3321fc7e66080a5d3d943ab9752b4'
4.exit()
<3>修改<1>生成的配置文件,将以下地址修改如下:
vi ~/.jupyter/jupyter_notebook_config.py (对应你的路径)
c.NotebookApp.ip='*'
c.NotebookApp.password = u'你保存的密码'
c.NotebookApp.open_browser = False
c.NotebookApp.port =8888 #随便指定一个端口,使用默认8888也可以
<4>启动Jupyter服务
命令行下开启服务:
jupyter notebook --ip=0.0.0.0 --no-browser --allow-root
<5>浏览器访问,并输入密码
http://服务器地址:端口号
参考
链接:https://www.jianshu.com/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