我正在尝试使用YARN节点标签来标记工作节点,但是当我在YARN上运行应用程序(Spark或简单的YARN应用程序)时,这些应用程序无法启动。
使用Spark时,如果指定--conf spark.yarn.am.nodeLabelExpression="my-label",则无法启动作业(在上阻止Submitted application [...],请参见下面的详细信息)。
对于YARN应用程序(如distributedshell),在指定时-node_label_expression my-label,该应用程序无法启动
这是我到目前为止所做的测试。
我正在使用Google Dataproc运行我的集群(例如:4个工作线程,2个可抢占节点)。我的目标是强制任何YARN应用程序主机在不可抢占的节点上运行,否则可以随时关闭该节点,从而使应用程序很难失效。
我正在使用YARN属性(--properties)创建集群以启用节点标签:
gcloud dataproc clusters create \
my-dataproc-cluster \
--project [PROJECT_ID] \
--zone [ZONE] \
--master-machine-type n1-standard-1 \
--master-boot-disk-size 10 \
--num-workers 2 \
--worker-machine-type n1-standard-1 \
--worker-boot-disk-size 10 \
--num-preemptible-workers 2 \
--properties 'yarn:yarn.node-labels.enabled=true,yarn:yarn.node-labels.fs-store.root-dir=/system/yarn/node-labels'
Run Code Online (Sandbox Code Playgroud)
打包的Hadoop和Spark版本:
之后,我创建了一个标签(my-label),并使用该标签更新了两个不可抢先的worker:
yarn rmadmin -addToClusterNodeLabels "my-label(exclusive=false)"
yarn rmadmin -replaceLabelsOnNode "\
[WORKER_0_NAME].c.[PROJECT_ID].internal=my-label …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用挂载在Docker容器中的命名卷,但是Permission denied尝试在已挂载的文件夹中创建文件时出现错误。因此,我mount在创建卷时尝试使用选项,但是这并不能满足我的需要。
我完全知道,当docker volume create my_named_volume使用选项-v my_named_volume:/home/user/test或来装入卷(由创建--mount type=volume,source=my_named_volume,target=/home/user/test)时,容器内的文件夹(/home/user/test将属于root用户所有,即使它/home/user属于user在我中创建的用户)Dockerfile。
docker run --rm \
--name test_named_volume \
--mount type=volume,source=my_named_volume,target=/home/user/test \
test_named_volume \
su user -c "touch /home/user/test/a"
Run Code Online (Sandbox Code Playgroud)
然后我得到:
touch: cannot touch '/home/user/test/a': Permission denied
Run Code Online (Sandbox Code Playgroud)
我明白这一点。这就是为什么我mount在创建卷时尝试使用选项的原因。
mount 选项我uid在创建卷时指定了一个,以使用户user能够在该卷中创建文件:
docker volume create my_named_volume \
--opt o=uid=1000
Run Code Online (Sandbox Code Playgroud)
1000是在my中创建uid的用户的:userDockerfile
FROM debian:jessie
ENV HOME …Run Code Online (Sandbox Code Playgroud) a这是一个带有 4 个目标( 、b和c)的简单 Makefile all。目标b可能会失败(此处用 表示exit 1)。
a:
echo "a"
b:
exit 1
c:
echo "c"
all: a b c
Run Code Online (Sandbox Code Playgroud)
运行时make all,c永远不会打印为b失败,c因此目标不会运行。但就我的具体情况而言,c即使b失败,我也想继续竞选。
我想知道是否有一种方法可以直接在 target 的依赖项中定义“如果出现错误则继续”策略all。
我知道可以通过以下方式达到所需的行为:
make -i all( --ignore-errors) 或make -k all( --keep-going)b(-如-exit 1)make a; …如何在运行时仅包含用于基准测试的包cargo bench?
目标的文档表明这是可能的,但我无法让它工作。
https://doc.rust-lang.org/cargo/reference/cargo-targets.html
我正在尝试通过过滤操作实现无限流。我想通过对尾部使用惰性评估来使其不会因堆栈溢出错误而崩溃。
abstract class MyStream[+A] {
def head: A
def tail: MyStream[A]
def #::[B >: A](element: B): MyStream[B] // prepend operator
def filter(predicate: A => Boolean): MyStream[A]
}
class FiniteStream[+A](val head: A, val tail: MyStream[A]) extends MyStream[A] {
override def #::[B >: A](element: B): MyStream[B] = new FiniteStream[B](element, this)
override def filter(predicate: A => Boolean): MyStream[A] = {
lazy val filteredTail = tail.filter(predicate)
if (predicate(head)) filteredTail
else filteredTail
}
}
class InfiniteStream[+A](override val head: A, generator: A => A) extends MyStream[A] …Run Code Online (Sandbox Code Playgroud) 在 Google BigQuery 中,可以检索过去(至少在过去 7 天)的表(快照)行:
对于 Legacy SQL,我们可以使用快照装饰器:
#legacySQL
SELECT * FROM [PROJECT_ID:DATASET.TABLE@-3600000]
Run Code Online (Sandbox Code Playgroud)
对于标准 SQL,我们可以使用FOR SYSTEM_TIME AS OFinFROM子句:
#standardSQL
SELECT *
FROM `PROJECT_ID.DATASET.TABLE`
FOR SYSTEM_TIME AS OF TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 HOUR);
Run Code Online (Sandbox Code Playgroud)
这两个示例都返回一小时前的快照PROJECT_ID.DATASET.TABLE。
但我想知道是否有任何保证检索过去的表数据。一位同事告诉我,他在某处读到(但他再也找不到了)这是一个“尽力而为”的功能,因此可能会丢失一些数据。
此功能是否可以在生产环境中用于数据恢复(例如,如果有人无意中截断了重要的表),只要在错误发生后的 7 天内完成恢复即可?是否能保证我们可以访问特定时间存储的全部数据?
更新
正如 @Pentium10 在评论中正确指出的那样,CREATE OR REPLACE在表上执行作业后恢复旧数据是不可能的。经过一番尝试,我什至会添加使用以下语句类型之一执行作业:
CREATE_TABLE( CREATE OR REPLACE)CREATE_TABLE_AS_SELECTDROP_TABLE完全消除了及时检索该特定表数据的能力。
但是,假设我们只使用以下语句类型来修改表数据:
INSERTUPDATEDELETEMERGE是否能保证t时刻的快照数据正是t时刻表中包含的数据?或者这是一个“尽力而为”的功能?
apache-spark ×1
benchmarking ×1
build ×1
docker ×1
gnu-make ×1
hadoop ×1
hadoop-yarn ×1
makefile ×1
mount ×1
rust ×1
rust-cargo ×1
scala ×1
stream ×1