Spark连接Hadoop读取HDFS问题小结
来源:互联网 发布:软件挖矿 编辑:程序博客网 时间:2024/06/04 17:45
Spark与hadoop版本
我使用0.7.2的Spark版本,且是pre-built过的版本,支持的hadoop版本是hadoop1。在http://spark-project.org/files/上能下载的预编译过的spark版本里,凡是预编译cdh4的压缩包,下载后解压会中断,文件本身有问题。我在google论坛上发帖说明了这个问题:https://groups.google.com/forum/#!topic/spark-users/Y4iJ1458d18。所以我现在使用预编译了1代hadoop的spark,来连接2代hadoop。按理说在编译spark的时候,通过改动SPARK_HOME/project/SparkBuild.scala,可以指定要支持的hadoop版本:
- // Hadoop version to build against. For example, "0.20.2", "0.20.205.0", or
- // "1.0.4" for Apache releases, or "0.20.2-cdh3u5" for Cloudera Hadoop.
- val HADOOP_VERSION = "1.0.4"
- val HADOOP_MAJOR_VERSION = "1"
- // For Hadoop 2 versions such as "2.0.0-mr1-cdh4.1.1", set the HADOOP_MAJOR_VERSION to "2"
- //val HADOOP_VERSION = "2.0.0-mr1-cdh4.1.1"
- //val HADOOP_MAJOR_VERSION = "2"
解决方案
1. 受了https://groups.google.com/forum/#!topic/spark-users/XKj__psY-EA这个帖子的启发,替换了SPARK_HOME/lib_managed/jars下的hadoop-core-1.0.4.jar,换成了自己hadoop-client里hadoop/lib下的hadoop-2-core.jar包。
2. 在SPARK_HOME/conf下要添加hadoop的配置文件。我是添加了hadoop-site.xml和hadoop-default.xml两个配置文件。原因是,前者提供了连接的hdfs集群信息和账户密码;后者提供了下面这个配置:
- <property>
- <name>fs.hdfs.impl</name>
- <value>org.apache.hadoop.hdfs.DistributedFileSystem</value>
- <description>The FileSystem for hdfs: uris.</description>
- </property>
- val file = sc.textFile("hdfs://xxx")
- file.count()
其他问题
这边再提供一个Unable to load native-hadoop library 和 Snappy native library not loaded的解决方案。这个问题主要是jre目录下缺少了libhadoop.so和libsnappy.so两个文件。具体是,spark-shell依赖的是scala,scala依赖的是JAVA_HOME下的jdk,libhadoop.so和libsnappy.so两个文件应该放到JAVA_HOME/jre/lib/amd64下面。要注意的是要知道真正依赖到的JAVA_HOME是哪一个,把两个.so放对地方。这两个so:libhadoop.so和libsnappy.so。前一个so可以在HADOOP_HOME下找到,比如hadoop\lib\native\Linux-amd64-64。第二个libsnappy.so需要下载一个snappy-1.1.0.tar.gz,然后./configure,make编译出来。snappy是google的一个压缩算法,在hadoop jira下https://issues.apache.org/jira/browse/HADOOP-7206记录了这次集成。
单替换了hadoop的core包后,可能还会出一些WARN或者ERROR的提示,主要牵扯到的是hadoop别的包的一些兼容啊,版本提升的问题。具体问题具体再解决吧。
(全文完)
- Spark连接Hadoop读取HDFS问题小结
- Spark连接Hadoop读取HDFS问题小结
- Spark连接Hadoop读取HDFS问题小结
- spark例子无法读取到hadoop的hdfs的文件
- Spark在Hadoop的HDFS中读取数据
- hdfs远程连接hadoop问题与解决
- Spark 读取HDFS文件
- Spark读取HDFS文件
- spark streaming读取HDFS
- 配置spark+hadoop(hdfs)集群
- spark读取hdfs异常记录
- spark 与 hadoop的hdfs的连接(亲测有效)
- Hadoop hdfs权限问题
- hadoop、spark、Hbase、Hive、hdfs,是什么
- spark streaming 写hdfs问题
- spark中读取hdfs中文件出错
- spark读取hdfs数据本地性异常
- spark流式读取hdfs中数据
- 通过浏览器访问操作Oracle数据库(附Oracle修改用户名和密码)
- L3-010.是否完全二叉搜索树
- Linux 64bit下Oracle11g安装手册
- 机器学习优化方法小结
- JAVA Map、Set、List、Queue、Stack的特点与用法
- Spark连接Hadoop读取HDFS问题小结
- Sort the Array CodeForces
- RESTful服务最佳实践——(五)
- Android打印框架Demo
- Java内部类
- kjljljk
- 架构师成长之路——7个月成为一名架构师
- MVP框架实战Demo
- JAVA 快速排序