尝试使用spark-shell读取位于S3中的文件:
scala> val myRdd = sc.textFile("s3n://myBucket/myFile1.log")
lyrics: org.apache.spark.rdd.RDD[String] = s3n://myBucket/myFile1.log MappedRDD[55] at textFile at <console>:12
scala> myRdd.count
java.io.IOException: No FileSystem for scheme: s3n
at org.apache.hadoop.fs.FileSystem.getFileSystemClass(FileSystem.java:2607)
at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2614)
at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:91)
... etc ...
Run Code Online (Sandbox Code Playgroud)
该IOException异常:没有文件系统的方案:S3N与发生错误:
这个错误的原因是什么?缺少依赖,缺少配置或误用sc.textFile()?
或者可能是因为这个帖子似乎暗示了影响Hadoop 2.60特有的Spark构建的错误.我将尝试Spark for Hadoop 2.40,看看这是否解决了这个问题.
我想访问具有完全限定名称的hdfs,例如:
hadoop fs -ls hdfs://machine-name:8020/user
Run Code Online (Sandbox Code Playgroud)
我也可以简单地访问hdfs
hadoop fs -ls /user
Run Code Online (Sandbox Code Playgroud)
但是,我正在编写应该适用于不同发行版(HDP,Cloudera,MapR等)的测试用例,其中涉及访问具有限定名称的hdfs文件.
据我所知,hdfs://machine-name:8020它在core-site.xml中定义为fs.default.name.但这在不同的发行版上似乎有所不同.例如,hdfs是MapR上的maprfs.IBM BigInsights甚至没有core-site.xml在$HADOOP_HOME/conf.
hadoop似乎没有办法告诉我fs.default.name使用它的命令行选项定义了什么.
如何fs.default.name从命令行可靠地获取定义的值?
测试将始终在namenode上运行,因此机器名称很容易.但是获取端口号(8020)有点困难.我试过lsof,netstat ..但仍然找不到可靠的方法.
我一直在尝试使用sqlContext.read.format("jdbc").options(driver="org.apache.hive.jdbc.HiveDriver")Hive表进入Spark而没有任何成功.我做过研究并阅读如下:
Spark 1.5.1无法使用hive jdbc 1.2.0
http://belablotski.blogspot.in/2016/01/access-hive-tables-from-spark-using.html
我使用了最新的Hortonworks Sandbox 2.6并向社区询问了同样的问题:
我想做的事情非常简单pyspark:
df = sqlContext.read.format("jdbc").options(driver="org.apache.hive.jdbc.HiveDriver", url="jdbc:hive2://localhost:10016/default", dbtable="sample_07",user="maria_dev", password="maria_dev").load()
Run Code Online (Sandbox Code Playgroud)
这给了我这个错误:
17/12/30 19:55:14 INFO HiveConnection: Will try to open client transport with JDBC Uri: jdbc:hive2://localhost:10016/default
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/hdp/current/spark-client/python/pyspark/sql/readwriter.py", line 139, in load
return self._df(self._jreader.load())
File "/usr/hdp/current/spark-client/python/lib/py4j-0.9-src.zip/py4j/java_gateway.py", line 813, in __call__
File "/usr/hdp/current/spark-client/python/pyspark/sql/utils.py", line 45, in deco
return f(*a, **kw)
File "/usr/hdp/current/spark-client/python/lib/py4j-0.9-src.zip/py4j/protocol.py", line 308, in get_return_value
py4j.protocol.Py4JJavaError: An error …Run Code Online (Sandbox Code Playgroud) 我刚刚下载了Hortonworks沙盒VM,里面有Hadoop版本2.7.1.我通过使用添加一些文件
hadoop fs -put /hw1/* /hw1
Run Code Online (Sandbox Code Playgroud)
...命令.之后我将删除添加的文件
hadoop fs -rm /hw1/*
Run Code Online (Sandbox Code Playgroud)
...命令,并在清理回收站后,通过
hadoop fs -expunge
Run Code Online (Sandbox Code Playgroud)
...命令.但是在重新清洗后,DFS剩余空间没有改变.即使我可以看到数据真的从/ hw1 /和recyle bin中删除了.我有fs.trash.interval parameter = 1.
实际上我可以在/hadoop/hdfs/data/current/BP-2048114545-10.0.2.15-1445949559569/current/finalized/subdir0/subdir2文件夹中找到所有我的数据分块,这真的让我感到惊讶,因为我希望它们被删除.
那么我的问题是如何以真正删除的方式删除数据?经过几次添加和删除后,我的空闲空间耗尽了.
我在我的机器上安装了Cloudera VM 5.8版.当我执行字数统计mapreduce工作时,它会抛出异常.
`16/09/06 06:55:49 WARN hdfs.DFSClient: Caught exception
java.lang.InterruptedException
at java.lang.Object.wait(Native Method)
at java.lang.Thread.join(Thread.java:1281)
at java.lang.Thread.join(Thread.java:1355)
at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.closeResponder(DFSOutputStream.java:862)
at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.endBlock(DFSOutputStream.java:600)
at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.run(DFSOutputStream.java:789)
`
Run Code Online (Sandbox Code Playgroud)
但工作顺利完成.请有人帮我解决这个问题.
谢谢.
hadoop mapreduce cloudera hortonworks-data-platform hortonworks-sandbox
我是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
我们有两个HDP集群的设置让我们称它们为A和B.
集群一个节点:
CLUSTER B NODES:
我们的应用程序中有三个主要组件,它们对传入的文件执行ETL(提取,转换和加载)操作.我将这些组件分别称为E,T和L.
组件E特征:
组件T特征:
组分L特征:
组件L是所有三个组件中的宝石,我们没有遇到任何故障.组分E中存在轻微的无法解释的毛刺,但组分T是最麻烦的.
组件E和T都使用DFS客户端与namenode进行通信.
以下是我们在运行组件T时间歇性地观察到的异常的摘录:
clusterA.namenode.com/10.141.160.141:8020. Trying to fail over immediately.
java.io.IOException: Failed on local exception: java.io.IOException: Connection reset by peer; Host Details : local host is: "clusterB.datanode.com"; destination host is: "clusterA.namenode.com":8020;
at org.apache.hadoop.net.NetUtils.wrapException(NetUtils.java:782)
at org.apache.hadoop.ipc.Client.call(Client.java:1459)
at org.apache.hadoop.ipc.Client.call(Client.java:1392)
at org.apache.hadoop.ipc.ProtobufRpcEngine$Invoker.invoke(ProtobufRpcEngine.java:229)
at com.sun.proxy.$Proxy15.complete(Unknown Source)
at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolTranslatorPB.complete(ClientNamenodeProtocolTranslatorPB.java:464)
at sun.reflect.GeneratedMethodAccessor1240.invoke(Unknown Source) …Run Code Online (Sandbox Code Playgroud) 当我尝试构建matplotlib-1.3.1时,我得到以下freetype头错误.可能它找不到ftheader.h.有关如何解决这个问题的任何想法?
注意:我刚刚按照FreeType安装中提到的说明安装了Freetype- 2.5.0.1,因为从源代码手动构建Matplotlib-1.3.1失败了,因为最初找不到所需的软件包'freetype'.
In file included from src/ft2font.h:16,
from src/ft2font.cpp:3:
/usr/include/ft2build.h:56:38: error: freetype/config/ftheader.h: No such file or directory
In file included from src/ft2font.cpp:3:
src/ft2font.h:17:10: error: #include expects "FILENAME" or <FILENAME>
src/ft2font.h:18:10: error: #include expects "FILENAME" or <FILENAME>
src/ft2font.h:19:10: error: #include expects "FILENAME" or <FILENAME>
src/ft2font.h:20:10: error: #include expects "FILENAME" or <FILENAME>
src/ft2font.h:21:10: error: #include expects "FILENAME" or <FILENAME>
In file included from /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/stl_algobase.h:69,
from /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/char_traits.h:41,
from /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/string:42,
from ./CXX/Python2/Exception.hxx:46,
from ./CXX/Exception.hxx:40,
from ./CXX/Python2/Objects.hxx:44,
from ./CXX/Python2/Extensions.hxx:52,
from ./CXX/Extensions.hxx:40,
from …Run Code Online (Sandbox Code Playgroud) 我正在建立一个带有3个运行Ubuntu 16.04LTS的虚拟机VM的ambari集群.但是我收到以下警告:
The following hosts have Transparent Huge Pages (THP) enabled.
THP should be disabled to avoid potential Hadoop performance issues.
Run Code Online (Sandbox Code Playgroud)
如何在Ubuntu 16.04中禁用THP?
我使用的是HDP-2.6.0.3,但我需要Zeppelin 0.8,所以我已将其作为独立服务安装.当我跑:
%sql
show tables
Run Code Online (Sandbox Code Playgroud)
我什么都没回来,当我运行Spark2 SQL命令时,我得到'table not found'.表格可以在0.7 Zeppelin中看到,它是HDP的一部分.
任何人都可以告诉我我失踪了什么,让Zeppelin/Spark看到Hive?
我为创建zep0.8而执行的步骤如下:
maven clean package -DskipTests -Pspark-2.1 -Phadoop-2.7-Dhadoop.version=2.7.3 -Pyarn -Ppyspark -Psparkr -Pr -Pscala-2.11
Run Code Online (Sandbox Code Playgroud)
将/usr/hdp/2.6.0.3-8/zeppelin/conf中的zeppelin-site.xml和shiro.ini复制到/ home/ed/zeppelin/conf.
创建了/home/ed/zeppelin/conf/zeppeli-env.sh,其中我提出了以下内容:
export JAVA_HOME=/usr/jdk64/jdk1.8.0_112
export HADOOP_CONF_DIR=/etc/hadoop/conf
export ZEPPELIN_JAVA_OPTS="-Dhdp.version=2.6.0.3-8"
Run Code Online (Sandbox Code Playgroud)
将/etc/hive/conf/hive-site.xml复制到/ home/ed/zeppelin/conf
编辑:我也尝试过:
import org.apache.spark.sql.SparkSession
val spark = SparkSession
.builder()
.appName("interfacing spark sql to hive metastore without configuration file")
.config("hive.metastore.uris", "thrift://s2.royble.co.uk:9083") // replace with your hivemetastore service's thrift url
.config("url", "jdbc:hive2://s2.royble.co.uk:10000/default")
.config("UID", "admin")
.config("PWD", "admin")
.config("driver", "org.apache.hive.jdbc.HiveDriver")
.enableHiveSupport() // don't forget to enable hive support
.getOrCreate() …Run Code Online (Sandbox Code Playgroud) apache-spark ×4
hadoop ×3
hdfs ×3
cloudera ×2
hive ×2
ambari ×1
containers ×1
executor ×1
freetype ×1
hadoop-yarn ×1
jdbc ×1
mapr ×1
mapreduce ×1
matplotlib ×1
namenode ×1
numpy ×1
pyspark ×1
rdd ×1
rpc ×1
tcp ×1
ubuntu ×1
ubuntu-16.04 ×1