【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

联通大数据实操:CDH 部署多版本的 Python 环境及搭建本地的 Python 第三方库

  • 2019-09-09
  • 本文字数:4039 字

    阅读完需:约 13 分钟

联通大数据实操:CDH部署多版本的Python环境及搭建本地的Python第三方库

由于其易用性好,以及现在机器学习和人工智能的崛起,Python 成为当前非常火热的一门语言。承载多租户的大数据平台往往对于 Python 版本和第三方库有很多个性化的需求,联通大数据平台承载了百度、阿里、腾讯、苏宁、京东等上百个租户,在租户部署模型时就会要求集群计算节点拥有不同类别的 Python 科学计算包。下文将主要讲述如何在 CDH 集群基于二次打包的 Anaconda 安装包部署 Python 多版本运行环境,并搭建本地 Python 第三方库。

基于 Anaconda 部署 Python3

一般生产环境默认 python 版本为 2.7,为了提供多版本 python 开发环境。需要先下载 anaconda 的 parcel 安装包并解压到本地,安装 python3 虚拟环境,然后安装集群计算节点所需要的常用 python 第三方包,如 TensorFlow 等科学计算包。


需准备:


  • 电脑准备 300G 或以上的存储空间;

  • wget:下载某个源的所有 package 到本地;

  • Nginx:发布本地 PyPI。


首先我们先进行 Anaconda.Parcel 的解压和 Python3 环境的创建:


第一步:下载 Anaconda 的 Parcel 包。


参考链接:https://repo.continuum.io/pkgs/misc/parcels/archive/



第二步:解压 Anaconda 的 Parcel 包,安装 Python3 私有环境。




安装好后显示环境如下:




安装私有的 Python 第三方本地库,Python 第三方库分为 pip 和 Conda 库两种安装方式(最后我们选择 Conda,比 pip 功能更强大,完善包及虚拟环境管理工具):


Conda 私有库安装方式:


首先通过外网下载所有第三方包,第三方包在清华镜像站,虽然有部分包不是最新版本,但下载速度快。


参考链接:https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/


由于公司主机不能连接外网。这里就省事地通过 Windows 安装 wget 全量捞取页面所需包。


Windows 安装 wget:


以管理员身份运行 CMD,下载安装 wget。


C:\WINDOWS\system32>@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"C:\WINDOWS\system32>choco install wget
复制代码


wget 安装完毕,如果想更新,就输入:


C:\WINDOWS\system32>choco upgrade wget
复制代码


下载第三方 Python 包:


通过 UE 列操作范围选择过滤各个包名,存入 txt。然后使用 wget 读取 txt 下载,下载时间大概持续 7~8 个小时。


-b 后台,-c 断电追加, -i 读取文档多个连接, -p 下载 urls 下所有文档, -f 指定日志文件位置。


wget -b -c -i C:\conf\pyku.txt -p C:\conf\ku -f C:\conf\wget-log
复制代码


Linux,安装 Nginx,并配置本地文件 HTTP 映射。


具体 Nginx 配置如下:


先配置两个页面:


/usr/share/nginx/html
index.html<!DOCTYPE html><html><head><title>Welcome to nginx!</title><style>body {width: 35em;margin: 0 auto;font-family: Tahoma, Verdana, Arial, sans-serif;}</style></head><body><h1>Welcome to nginx!</h1><a href="http://12.109.21.84/pkgs/free/">free</a><a href="http://12.109.21.84/pkgs/main/">main</a>
<p><em>Thank you for using nginx.</em></p></body></html>

free.html
cat free.html<!DOCTYPE html><html><head></head><body><a href="http://12.109.21.84/pkgs/free/linux-64/">linux-64</a><a href="http://12.109.21.84/pkgs/main/linux-64/">linux-64</a></body></html>


/etc/nginx/conf.d
server {listen 80;server_name localhost;
#charset koi8-r;#access_log /var/log/nginx/log/host.access.log main;
location / {root /usr/share/nginx/html/;index index.html index.htm;}location /pkgs/free {alias /usr/share/nginx/html/pkgs/free/;index index.html index.htm;autoindex on;autoindex_exact_size on;autoindex_localtime on;}location /pkgs/free/linux-64 {alias /opt/beh/core/condaku/freeku/;autoindex on;autoindex_exact_size on;autoindex_localtime on;}location /pkgs/free/noarch {alias /opt/beh/core/condaku/freenorch/;index index.html index.htm;autoindex on;autoindex_exact_size on;autoindex_localtime on;}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html#error_page 500 502 503 504 /50x.html;location = /50x.html {root /usr/share/nginx/html;}}
复制代码


配置好之后,启动 Nginx,查看本地页面如下:



配置 condarc:


conda config --add channels http://12.109.21.84/pkgs/free/ conda config --add channels http://12.109.21.84/pkgs/free/noarch/ conda config --set show_channel_urls yesvi ~/.condarc删除  - defaults这一行,保存退出后,source ~/.condarc
复制代码


安装第三方包:


使用命令 conda install 包名。



若在私有库没有的一些第三方库,也可以下载安装包之后移动到 pkgs 目录下。



使用 pip 安装 whl 包。



打包创建好 Python3,安装好所需科学计算包的 Anaconda,生成 sha 校验文件。


tar -zcvf Anaconda-5.0.1-el7.parcel Anaconda-5.0.1 --owner=root --group=rootsha1sum Anaconda-5.0.1-el7.parcel | cut -d ' ' -f 1 > Anaconda-5.0.1-el7.parcel.sha
复制代码


将 Anaconda 和生成的 sha 校验文件一起拷贝到 Parcel-Repo 目录下。



通过 CM 的 Parcel 管理,进行 Anaconda 的分发激活。



下面还整理了一份搭建私有 Python pip 源的过程(Windows 环境):


1、安装 Anaconda


参考链接:https://www.jb51.net/article/137772.htm


这个链接提供了 Anaconda 的安装,和使用国内镜像快速下载 Anaconda(5~6M/s)。


2、搭建自己的 pip 源


参考链接:https://www.jianshu.com/p/799b3490ad6d


  • 准备 300G 或以上的存储空间;

  • bandersnatch:下载某个源的所有 package 到本地;

  • Nginx:发布本地 PyPI。


这个网站提供的是 Linux 的,不过 Windows 也能用,具体如下:


1)首先下载 bandersnatch,因为装好了 Anaconda,所以可以使用 pip 直接下载


pip install bandersnatch


2) 生成配置文件 /etc/bandersnatch.conf


bandersnatch mirror


注:这一步会报错,因为 Windows 没有/etc 目录,直接在 C 盘下创建 etc 文件夹 ,然后再次运行会发现:C:\\etc\\bandersnatch.conf


文件被生成。


3)根据实际情况,重点修改以下两个配置,directory 指 package 在本地存放的位置,master 指被同步的源


[mirror]; The directory where the mirror data will be stored.directory = /srv/pypi
; The PyPI server which will be mirrored.; master = https://testpypi.python.org; scheme for PyPI server MUST be httpsmaster = https://pypi.python.org
复制代码


这部分需要修改为 Windows,且 directory 目录至少要 300G,包太多:



4)下载所有 package 至本地,我这要在 Windows 下的 Anconda Prompt 里面运行



bandersnatch -c /etc/bandersnatch.conf mirror$ bandersnatch -c /etc/bandersnatch.conf mirror2014-01-15 09:49:26,556 INFO: bandersnatch/1.5 (CPython 2.7.6-final0, Linux 3.19.0-37-generic x86_64)2014-01-15 09:49:26,558 INFO: Setting up mirror directory: /srv/pypi/2014-01-15 09:49:26,559 INFO: Setting up mirror directory: /srv/pypi/web/simple2014-01-15 09:49:26,560 INFO: Setting up mirror directory: /srv/pypi/web/packages2014-01-15 09:49:26,560 INFO: Setting up mirror directory: /srv/pypi/web/local-stats/days2014-01-15 09:49:26,561 INFO: Generation file missing. Reinitialising status files.......
复制代码


更新本地的 pacakge,(我暂时没用到,刚下载完,再去更新,会发现全是文件已存在):


bandersnatch -c /etc/bandersnatch.conf mirror
复制代码


5)安装并配置 Nginx(我的是基于 Windows,我安装的是下面链接的 Nginx 版本,没用最新的)


参考链接:https://www.cnblogs.com/qfb620/p/5508468.html


测试 Nginx 可用后,关闭 Nginx,然后修改配置文件:


D:\nginx\nginx-1.8.1\conf\nginx.conf
复制代码


备份该文件,然后删除里面的 server{…},用如下替换:


server {  listen *:80;  server_name localhost;  root F:\\python_package\\web;  autoindex on;  charset utf-8;}
复制代码


注:F:\\python_package\\web 是之前 bandersnatch 下载包之后自动生成的。


配置好之后,启动 Nginx。


6)配置其他服务器的 pip 源(基于 Windows)


我这里用的是同一个局域网的其他 Windows 电脑。(能 Ping 通我的 IP)


来到另一台电脑,安装 Python 后会自带 pip,然后做如下操作:


参考链接:https://www.cnblogs.com/cwp-bg/p/8497075.html


打开查看隐藏文件夹选项后来到:(AppData 为隐藏项目)C:\Users\Administrator\AppData\Roaming。


然后看有没有 pip 文件夹,没有就新建该文件夹,然后在该文件夹下新建 pip.ini,输入如下:


[global]timeout = 6000index-url = http://我的机器ip/simpletrusted-host = 我的机器ip
复制代码


7)测试 pip install


用配置好 pip 源的电脑,管理员运行 CMD,输入如下:


pip install pymysql
复制代码


结果如下:



生效,确实访问了我的 IP 下的 pip 源,并且路径一致,可以在我的电脑浏览器输入链接,找到该文件:


输入链接:http://我的机器ip/packages/ed/39/15045ae46f2a123019aa968dfcba0396c161c20f855f11dea6796bcaae95/


发现如下:



8)下一步,照搬到 Linux。


作者介绍


余澈,中国联通大数据技术部平台组核心技术负责人,项目管理高级工程师,具有多年大数据平台运维管理及开发优化经验。管理过多个上千节点集群,擅长对外多租户平台的维护开发。信科院大数据性能测试、功能测试主力,大厂 PK 获得双项第一。


本文转载自公众号 DBAplus 社群(ID:dbaplus)


原文链接


https://mp.weixin.qq.com/s?__biz=MzI4NTA1MDEwNg==&mid=2650780800&idx=2&sn=0def50e6bb44db39b2457e6ac152e0df&chksm=f3f90115c48e8803c6eb4d33e5eefe62c15afa0c02b8a180e2dcb8f3448252859e212cc25f58&scene=27#wechat_redirect


2019-09-09 08:002577

评论 1 条评论

发布
用户头像
厉害厉害!
2019-09-09 09:01
回复
没有更多了
发现更多内容

喜讯丨上海和今信息科技有限公司入选2023年上海市专精特新中小企业名单

ModelWhale

人工智能 科技 专精特新企业

普及旗舰音质,一加 Buds 3正式发布 售价499元

编程猫

数据库内核那些事|细说PolarDB优化器查询变换:IN-List变换

阿里云瑶池数据库

数据库 List 阿里云 云原生 adb

Jira停售Server版在即,飞书项目或成为最佳选择

科技热闻

通过聚道云软件连接器实现销帮帮软件与i人事软件的智能对接

聚道云软件连接器

案例分享

玩转低代码可视化平台,软件开发如此简单!

互联网工科生

软件开发 低代码 可视化开发 JNPF

官宣|硬核阵容曝光!PolarDB开发者大会全议程公布

阿里云瑶池数据库

数据库 阿里云 云原生 开发者大会

软件测试开发/全日制丨自动化测试定位策略 学习笔记

测试人

软件测试 测试开发

大数据开发与低代码:加速数据处理与解决方案开发

EquatorCoco

数据库 低代码 大数据开发

构建企业级AI中台,实现业务场景价值闭环

ModelWhale

AI 数字化转型 中台架构 AI中台

软件测试开发/全日制丨测试用例-黑盒测试方法论 学习笔记

测试人

软件测试

数云引领,神州数码荣获CSA2023安全创新奖

科技热闻

DAPP代币燃烧质押项目系统开发丨详情开发

l8l259l3365

C#最佳工具集合:IDE、分析、自动化工具等

EquatorCoco

C# ide 编程语言

前端技术-调试工具(上)

不在线第一只蜗牛

前端 框架 前端技术

2024 AIGC 应用层十大趋势;iPhone 遭史上最复杂攻击!丨 RTE 开发者日报 Vol.119

声网

爬虫工具(tkinter+scrapy+pyinstaller)

快乐非自愿限量之名

工具 爬虫 爬虫工具

OmniPlan Pro 4 for Mac(项目流程管理工具) v4.6完美激活版

mac

项目管理软件 苹果mac Windows软件 OmniPlan Pro

软件开发隐藏报价和虚假信息,合约如何来提高安全性

软件开发-梦幻运营部

NFT 项目入驻 NFTScan Site 流程说明

NFT Research

NFT NFT\ NFTScan nft工具

揭秘阿里巴巴:如何通过API实时捕获中国市场商品数据

Noah

数字化助力,聚道云软件连接器实现软件公司人事信息自动同步

聚道云软件连接器

案例分享

全新升级!腾讯云大数据ES Serverless服务开启日志分析新体验

腾讯云大数据

ES

SEO内容页面性能优化全攻略

九凌网络

和鲸携手上海交大医学院张维拓老师,混合式教学聚焦R语言医学数据分析,从图表开始复现顶刊论文

ModelWhale

人工智能 数据分析 R语言 代码复现 医学

自动化接口测试工具 AREX 0.6.2 版本发布

AREX 中文社区

开源 自动化测试 接口测试

优化独立站网页布局,提升30%用户留存

九凌网络

和鲸解放军总医院连续生理数据分析引擎入选爱分析数据智能最佳实践案例

ModelWhale

人工智能 大数据 数字化转型 企业管理 数智化

低代码平台受到欢迎的原因有哪些?

这我可不懂

低代码 数字化 应用程序 JNPF

云桌面有什么技术特点?应用场景是什么?

青椒云云电脑

桌面云 云桌面 云桌面解决方案

lazada商品详情数据接口(lazada.item_get)丨lazada API接口

tbapi

lazada商品详情数据接口 lazada商品数据接口 lazada商品API接口 lazada API接口

联通大数据实操:CDH部署多版本的Python环境及搭建本地的Python第三方库_大数据_余澈_InfoQ精选文章