我是YARN上的Spark的新手,并不了解YARN Containers和Spark 之间的关系Executors.我根据yarn-utils.py脚本的结果尝试了以下配置,可用于查找最佳群集配置.
Hadoop集群(HDP 2.4)我正在研究:
所以我跑了python yarn-utils.py -c 12 -m 64 -d 4 -k True(c =核心,m =内存,d = hdds,k = hbase-installed)并得到以下结果:
Using cores=12 memory=64GB disks=4 hbase=True
Profile: cores=12 memory=49152MB reserved=16GB usableMem=48GB disks=4
Num Container=8
Container Ram=6144MB
Used Ram=48GB
Unused Ram=16GB
yarn.scheduler.minimum-allocation-mb=6144
yarn.scheduler.maximum-allocation-mb=49152
yarn.nodemanager.resource.memory-mb=49152
mapreduce.map.memory.mb=6144
mapreduce.map.java.opts=-Xmx4915m
mapreduce.reduce.memory.mb=6144
mapreduce.reduce.java.opts=-Xmx4915m
yarn.app.mapreduce.am.resource.mb=6144
yarn.app.mapreduce.am.command-opts=-Xmx4915m
mapreduce.task.io.sort.mb=2457
Run Code Online (Sandbox Code Playgroud)
我通过Ambari界面进行的这些设置并重新启动了群集.这些值也大致与我之前手动计算的值相匹配. …
containers executor hadoop-yarn hortonworks-data-platform apache-spark
我想在我的Java Spark应用程序中使用RangePartitioner,但我不知道如何设置两个scala参数scala.math.Ordering<K> evidence$1和scala.reflect.ClassTag<K> evidence$2.有人能举个例子吗?
这是RangePartitioner的JavaDoc链接(对我来说没什么用,因为我是Spark和Scala的新手......):
我的代码实际上看起来像:
JavaPairRDD<Integer, String> partitionedRDD = rdd.partitionBy(new RangePartitioner<Integer, String>(10, rdd, true, evidence$1, evidence$2));
Run Code Online (Sandbox Code Playgroud) 我有一个包含名称的Android应用程序my.test.app.我想生成一个二维码,其中:
有可能这样做,以便任何Android QR扫描仪可以处理上述操作吗?我找不到一个能够实现两者的问题/答案......谢谢!
编辑 - 到目前为止我做了什么我 将以下内容添加到我的"App to open"清单中:
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme"
android:exported="true" >
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:scheme="my.test.app"/>
</intent-filter>
</activity>
...
</application>
Run Code Online (Sandbox Code Playgroud)
当我生成带有内容的QR码my.test.app://test并扫描它时,QR阅读器应用程序显示正确的内容,但不会打开我的应用程序!
第二次编辑 - 尝试了一些网址
我只是尝试在我的Manifest的intent-filter中设置一些其他URL:
<data android:scheme="http" android:host="play.google.com" android:pathPrefix="/store/apps/details?id=my.test.app"/>
http://play.google.com/store/apps/details?id=my.test.app
2. <data android:scheme="http" android:host="myapp.com" android:pathPrefix="/barcode"/>
http://myapp.com/barcode!但问题是,扫描时未安装应用程序时没有解决方案/目标地址!也许可以通过HTML网站进行重定向,但我不想为此使用HTML服务器!我想调整我的Java Spark应用程序(实际上使用RDD进行某些计算)来Datasets代替RDDs.我是数据集的新手,不知道如何将哪个事务映射到相应的数据集操作.
目前我将它们映射为:
JavaSparkContext.textFile(...) -> SQLContext.read().textFile(...)
JavaRDD.filter(Function) -> Dataset.filter(FilterFunction)
JavaRDD.map(Function) -> Dataset.map(MapFunction)
JavaRDD.mapToPair(PairFunction) -> Dataset.groupByKey(MapFunction) ???
JavaPairRDD.aggregateByKey(U, Function2, Function2) -> KeyValueGroupedDataset.???
Run Code Online (Sandbox Code Playgroud)
相应的问题是:
JavaRDD.mapToPair该Dataset.groupByKey方法?JavaPairRDD映射到KeyValueGroupedDataset?JavaPairRDD.aggregateByKey方法?但是,我想将以下RDD代码移植到数据集中:
JavaRDD<Article> goodRdd = ...
JavaPairRDD<String, Article> ArticlePairRdd = goodRdd.mapToPair(new PairFunction<Article, String, Article>() { // Build PairRDD<<Date|Store|Transaction><Article>>
public Tuple2<String, Article> call(Article article) throws Exception {
String key = article.getKeyDate() + "|" + article.getKeyStore() + "|" + article.getKeyTransaction() + "|" + article.getCounter(); …Run Code Online (Sandbox Code Playgroud) 我正在构建一个Spark应用程序,我必须缓存大约15 GB的CSV文件.我UnifiedMemoryManager在这里阅读了Spark 1.6中引入的新内容:
https://0x0fff.com/spark-memory-management/
者之间的不同之User Memory和Spark Memory(其被再次分裂成Storage and Execution Memory).正如我所说,Spark Memory可以灵活地执行(shuffle,sort等)和存储(缓存)东西 - 如果需要更多内存,它可以从其他部分使用它(如果还没有完全使用).这个假设是否正确?
用户内存描述如下:
用户记忆.这是分配Spark Memory后剩余的内存池,完全取决于您喜欢的方式使用它.您可以在那里存储将在RDD转换中使用的数据结构.例如,您可以通过使用mapPartitions转换维护散列表来重写Spark聚合,以便运行此聚合,这将消耗所谓的用户内存.[...]再一次,这是用户存储器,它完全取决于你将存储在这个RAM中的内容以及如何,Spark完全没有考虑你在那里做什么以及你是否尊重这个边界.不遵守代码中的此边界可能会导致OOM错误.
如何访问这部分内存或者如何通过Spark管理?
为了我的目的,我只需要有足够的存储空间(因为我不做洗牌,加入等事情)?那么,我可以将spark.memory.storageFraction属性设置为1.0吗?
对我来说最重要的问题是,用户记忆怎么样?为什么它,特别是我上面描述的目的?
当我改变程序使用一些自己的类时,使用内存是否有区别,例如,RDD<MyOwnRepresentationClass>而不是RDD<String>?
这是我的代码片段(Livy Client在基准测试应用程序中多次调用它.我使用Spark 1.6.2和Kryo序列化.
JavaRDD<String> inputRDD = sc.textFile(inputFile);
// Filter out invalid values
JavaRDD<String> cachedRDD = inputRDD.filter(new Function<String, Boolean>() {
@Override
public Boolean call(String row) throws Exception {
String[] parts = row.split(";");
// Some filtering stuff
return hasFailure;
}
}).persist(StorageLevel.MEMORY_ONLY_SER());
Run Code Online (Sandbox Code Playgroud) 我在YARN集群(HDP 2.4)中使用Spark,具有以下设置:
当我使用命令运行我的spark应用程序时,spark-submit --num-executors 30 --executor-cores 3 --executor-memory 7g --driver-cores 1 --driver-memory 1800m ...YARN使用以下设置创建31个容器(每个执行程序进程一个+一个驱动程序进程):
我的问题是:为什么spark-submit参数--executor-cores 3没有效果?
resource-management hadoop-yarn hortonworks-data-platform apache-spark
我正在使用 Hadoop 3 处理 Hadoop 集群 (HDP)。还安装了 Spark 和 Hive。
由于 Spark 和 Hive 目录是分开的,因此有时会有点混乱,要知道如何以及在 Spark 应用程序中保存数据的位置。
我知道,该属性spark.sql.catalogImplementation可以设置为in-memory(使用基于 Spark 会话的目录)或hive(使用 Hive 目录进行持久元数据存储 -> 但元数据仍与 Hive DB 和表分开)。
我想知道物业metastore.catalog.default是做什么的。当我将其设置hive为时,我可以看到我的 Hive 表,但由于这些表存储/warehouse/tablespace/managed/hive在 HDFS的目录中,我的用户无权访问该目录(因为 hive 是所有者)。
那么,metastore.catalog.default = hive如果我无法从 Spark 访问表,为什么要设置, 呢?和 Hortonwork 的 Hive Warehouse Connector 有关系吗?
感谢您的帮助。
我想为我的Arduino UNO构建自己的草图上传应用程序。我有一条USB电缆将Android智能手机与UNO连接起来。现在,我想做类似于ArduinoDroid应用程序的操作:从我的Android设备读取一个.ino文件,编译并使用MY OWN应用程序将其上传到Arduino开发板。有人可以提供线索吗?那就太好了,谢谢!
使用IntelliJ Idea,我想实现以下内容:
我想将应用程序导出到jar,其中包含所有需要的库.例如,我需要用于S3访问的AWS Java SDK库,但是如果我将jar上传到服务器并运行jar我得到NoClassDefFoundError,请参见下文:
Exception in thread "main" java.lang.NoClassDefFoundError: com/amazonaws/auth/AWSCredentials
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2625)
at java.lang.Class.getMethod0(Class.java:2866)
at java.lang.Class.getMethod(Class.java:1676)
at sun.launcher.LauncherHelper.getMainMethod(LauncherHelper.java:494)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:486)
Caused by: java.lang.ClassNotFoundException: com.amazonaws.auth.AWSCredentials
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
... 6 more
Run Code Online (Sandbox Code Playgroud)
比较:我在Eclipse中创建了相同的项目并且没有错误!jar文件大小非常不同(Eclipse:~35 MB对比IntelliJ Idea:~5,5 MB)!
我通过Maven包含了这些库,并将它们也下载到我项目的"lib"文件夹中:

解:
感谢您的所有提示,我现在就开始工作了!诀窍是我没有将依赖项添加到pom.xml文件中(因为我认为这将在项目结构中设置后自动完成,但它没有)!另请参阅我的另一个问题:Intellij IDEA Maven插件 - 管理依赖关系和https://www.jetbrains.com/idea/help/maven.html!添加依赖项
我构建了一个Java应用程序,该应用程序通过ssh运行命令。在第一次尝试中,我通过用户名和密码进行了身份验证,并且一切正常。
现在,我想使用Kerberos keytab文件进行身份验证,但这会带来问题!
这里是我的配置几句话:
my-server.deMYREALM.DEkeytabuserCentOS 7Windows 8.1 (x64)了所有默认配置Kerberos for WindowsDanielkinit -kt ... 似乎工作正常,因此keytab文件也应该没问题到目前为止,我的代码片段是:
public static void main(String[] args) {
String host = "my-server.de";
String user = "keytabuser";
String command = "ls -l";
JSch jsch = new JSch();
jsch.setLogger(new MyLogger());
System.setProperty("java.security.krb5.conf", "C:\\ProgramData\\MIT\\Kerberos5\\krb5.ini");
System.setProperty("java.security.auth.login.config", "C:\\ProgramData\\MIT\\Kerberos5\\jaas.conf");
System.setProperty("javax.security.auth.useSubjectCredsOnly", "false");
//to enable kerberos debugging mode
System.setProperty("sun.security.krb5.debug", "true");
try {
Session session = jsch.getSession(user, host, 22);
Properties config = new …Run Code Online (Sandbox Code Playgroud) apache-spark ×5
hadoop-yarn ×2
rdd ×2
android ×1
arduino ×1
arduino-uno ×1
caching ×1
containers ×1
dataset ×1
executor ×1
google-play ×1
hadoop ×1
hadoop3 ×1
hive ×1
jaas ×1
java ×1
jsch ×1
kerberos ×1
keytab ×1
maven-plugin ×1
memory ×1
partitioning ×1
qr-code ×1
scala ×1
ssh ×1