标签: hortonworks-data-platform

使用sc.textFile("s3n:// ...)从S3读取Spark文件

尝试使用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与发生错误:

  • 开发机器上的Spark 1.31或1.40(没有Hadoop库)
  • Hortonworks Sandbox HDP v2.2.4(Hadoop 2.60)运行,它集成了Spark 1.2.1开箱即用
  • 使用s3://或s3n:// scheme

这个错误的原因是什么?缺少依赖,缺少配置或误用sc.textFile()

或者可能是因为这个帖子似乎暗示了影响Hadoop 2.60特有的Spark构建的错误.我将尝试Spark for Hadoop 2.40,看看这是否解决了这个问题.

hortonworks-data-platform apache-spark rdd

45
推荐指数
7
解决办法
9万
查看次数

查找HDFS正在侦听的端口号

我想访问具有完全限定名称的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 ..但仍然找不到可靠的方法.

hadoop hdfs cloudera mapr hortonworks-data-platform

25
推荐指数
2
解决办法
4万
查看次数

SQLException上的sqlContext HiveDriver错误:不支持方法

我一直在尝试使用sqlContext.read.format("jdbc").options(driver="org.apache.hive.jdbc.HiveDriver")Hive表进入Spark而没有任何成功.我做过研究并阅读如下:

如何从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并向社区询问了同样的问题:

https://community.hortonworks.com/questions/156828/pyspark-jdbc-py4jjavaerror-calling-o95load-javasql.html?childToView=156936#answer-156936

我想做的事情非常简单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)

hive jdbc hortonworks-data-platform apache-spark pyspark

21
推荐指数
1
解决办法
1279
查看次数

如何从HDFS中删除文件?

我刚刚下载了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文件夹中找到所有我的数据分块,这真的让我感到惊讶,因为我希望它们被删除.

那么我的问题是如何以真正删除的方式删除数据?经过几次添加和删除后,我的空闲空间耗尽了.

hadoop hdfs hortonworks-data-platform

20
推荐指数
5
解决办法
6万
查看次数

执行字数mapreduce作业时出现InterruptedException

我在我的机器上安装了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

16
推荐指数
2
解决办法
1万
查看次数

YARN资源管理器上的Spark:YARN容器和Spark执行器之间的关系

我是YARN上的Spark的新手,并不了解YARN Containers和Spark 之间的关系Executors.我根据yarn-utils.py脚本的结果尝试了以下配置,可用于查找最佳群集配置.

Hadoop集群(HDP 2.4)我正在研究:

  • 1主节点:
    • CPU:2个CPU,每个6个核心= 12个核心
    • RAM:64 GB
    • SSD:2 x 512 GB
  • 5个从节点:
    • CPU:2个CPU,每个6个核心= 12个核心
    • RAM:64 GB
    • HDD:4 x 3 TB = 12 TB
  • 安装了HBase(这是下面脚本的参数之一)

所以我跑了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

14
推荐指数
1
解决办法
5212
查看次数

运行Apache Spark Job时由对等方重置连接

我们有两个HDP集群的设置让我们称它们为A和B.

集群一个节点:

  • 它包含总共20台商品机器.
  • 有20个数据节点.
  • 在配置namenode HA时,有一个活动名称节点和一个备用名称节点.

CLUSTER B NODES:

  • 它包含总共5台商品机器.
  • 有5个数据节点.
  • 没有配置HA,并且此群集具有一个主要名称节点和一个辅助名称节点.

我们的应用程序中有三个主要组件,它们对传入的文件执行ETL(提取,转换和加载)操作.我将这些组件分别称为E,T和L.

组件E特征:

  • 该组件是Apache Spark Job,它仅在Cluster B上运行.
  • 它的工作是从NAS存储中获取文件并将它们放入集群B中的HDFS中.

组件T特征:

  • 该组件也是Apache Spark Job,它在Cluster B上运行.
  • 它的工作是获取组件E编写的HDFS文件,转换它们,然后将转换后的文件写入集群A中的HDFS.

组分L特征:

  • 该组件也是Apache Spark作业,它仅在集群A上运行.
  • 它的工作是拾取组件T写入的文件并将数据加载到群集A中的Hive表.

组件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)

rpc tcp hdfs hortonworks-data-platform namenode

13
推荐指数
1
解决办法
1856
查看次数

安装错误:ftheader.h:没有这样的文件或目录

当我尝试构建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)

numpy matplotlib freetype hortonworks-data-platform

12
推荐指数
2
解决办法
7917
查看次数

如何在Ubuntu 16.04LTS中禁用透明大页面(THP)

我正在建立一个带有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?

ubuntu hortonworks-data-platform ambari ubuntu-16.04

12
推荐指数
5
解决办法
2万
查看次数

如何获得Zeppelin独立服务才能看到Hive?

我使用的是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)

hive hortonworks-data-platform apache-spark apache-zeppelin

12
推荐指数
1
解决办法
556
查看次数