我的hadoop知识比较老旧,如果有讲错的请不吝赐教:
1. 如果把算法环境部署到每一个data node上,其实破坏了节点环境的独立性,它应该普遍适用于业务的计算要求,不被某个计算任务影响。集群的使用者也不应该有权限去影响节点的部署。破坏了这个规则,多用户、多任务就不可控。
2. 如果把算法包解压缩放到hdfs... hdfs的文件存储是分块的,块的大小可以设置,比如128M。一个大文件会拆分为若干128M的块,存储在各data node上,分块的信息、存储在哪里,类似的信息保持在name node。如果将类似py venv的小文件包不压缩放在hdfs上,会浪费
name node大量内存。
3. hdfs的每个文件块的份数是可设置的,但不会在每个节点上都有。大量小文件的访问,意味着计算程序需要频繁访问其他data node上的数据,这个成本远远高于每个data node下载一个zip(没几块)再解压缩。
4. 一般情况下,计算的运行时间会远高于下载一个算法zip并解压缩,如果不是,可能都没必要用hadoop来算。
【 在 qianfeng018 的大作中提到: 】
: 标 题: 自定义算法的运行环境为啥是zip包的形式放到spark/hadoop上?
: 发信站: 水木社区 (Mon Feb 5 12:11:34 2024), 转信
:
: 自己写了个算法,算法所需的运行环境用conda打了个zip包,扔到了hadoop上。在spark上运行用如下命令。
: 这里为什么是个zip包呢? 这样每次运行还得解压,不是浪费时间吗?
: 不能提前把conda环境在hadoop上解压,每次直接运行吗?
:
: 命令:
: spark-submit --master yarn \
: --deploy-mode cluster \
: --num-executors=8 \
: --executor-memory=10g \
: --executor-cores=2 \
: --driver-memory=4g \
: --conf spark.pyspark.python=./scoenv/scoenv/bin/python3.6 \
: --archives hdfs:/user/xx/xx//scoenv.zip#scoenv \
: --py-files demo.zip spark_driver.py xxx
:
: --
:
: ※ 来源:·水木社区
http://www.mysmth.net·[FROM: 223.104.40.*]
--
FROM 222.129.135.*