打包在集群运行hadoop时,老出现错误如下,程序用到gdal库,在网上说什么添加.so到java的jdk jre什么的都

hadoop start-all.sh时 namenode可以正常启动,datanode只能启动nodemanager~

在/etc/profile下添加如下两条环境变量
export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_PREFIX}/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_PREFIX/lib"
source /etc/profile
再启动hadoop
如果还不行,在你按照版本的解压缩包里找到native文件夹 吧原来的替换掉

Spark采用Scala语言实现,使用Scala作为应用框架。与Hadoop不同的是,Spark和Scala紧密集成,Scala像管理本地collective对象那样管理分布式数据集。

Spark支持分布式数据集上的迭代式任务,实际上它可以在Hadoop文件系统上与Hadoop一起运行,这是由第三方集群框架Mesos实现的。Spark由加州大学伯克利分校开发,用于构建大规模、低延时的数据分析应用。

Spark集群计算架构

Spark是一种类似于Hadoop的新型集群计算框架。不同的是,Spark用于特定工作负载类型的集群计算,这种计算在多个并行操作之间重用工作数据集(如机器学习算法)。为了优化这种类型的计算,Spark引入基于内存的集群计算,即将数据集缓存在内存中,减少访问延迟。

Spark还引入了一个抽象概念,即弹性分布式数据集RDD(resilient distributed datasets )。RDD是一个分布在一组节点之间的只读的对象集合。这些集合是弹性的,即能够在部分数据集丢失的情况下重建。重建部分数据集的过程需要一种维护血统(lineage,即重建部分数据集所需的信息,说明数据是根据什么过程产生的)的容错机制支持。一个RDD可以是:(1)一个从文件创建的Scala对象,或(2)一个并行切片(分布在各个节点之间),或(3)从其他RDD转换得来,或(4)改变已有RDD的持久性,如请求将已有RDD缓存在内存中。

Spark应用称为driver,实现单个节点或一组节点上的操作。与Hadoop一样,Spark支持单节点和多节点集群。对于多节点操作,Spark依附于Mesos集群管理器。Mesos为分布式应用提供了有效的资源共享和隔离的平台(见图1)。这种配置允许Spark与Hadoop共用一个节点共享池。

图1 Spark依赖于Mesos集群管理器实现资源共享和隔离

Spark编程模型

Driver在数据集上执行两种操作:行为(action)和转换(transformation)。action,即在数据集上执行计算,并向driver返回一个值;transformation,即从已有数据集创建新的数据集。例如,执行Reduce操作(使用某个函数)、遍历数据集(即在每个元素上执行一个函数,类似Map操作),属于action;Map操作、Cache操作(即请求新的数据集缓存在内存中),属于transformation。

下面我们将简单介绍一下这两种操作的实例。不过首先熟悉一下Scala语言。

Scala简介

很多著名网站都使用Scala,像Twitter,LinkedIn,及Foursquare(其web应用框架叫Lift)。此外,有证据表明金融机构也对Scala的性能感兴趣(例如使用EDF Trading进行衍生工具定价)。

Scala是一种多范式的编程语言,支持命令式、函数式和面向对象的编程范式。从面向对象的角度来看,Scala中的每个值都是一个对象。同理,从函数式编程的角度来看,每个函数也都是一个值。Scala还是一种静态类型语言,其类型系统表达能力强且安全。

此外,Scala还是一种虚拟机语言,Scala编译器生成字节码,使用JRE2直接在Java虚拟机(JVM)上运行。这样,Scala可以在几乎任何支持JVM的地方运行(需要增加Scala运行时库),并使用已有的Java库和Java代码。

最后,Scala是可扩展的,可以以库的形式轻易无缝地集成到其他语言中去。

Scala实例

现在我们来看看Scala的几个实例。Scala有自己的解释器,可以交互式地使用它。本文不对Scala语言进行具体论述,可以参考这里。

清单1 使用解释器快速了解一下Scala语言。启动Scala之后,出现命令提示符,你就可以在交互模式下评估表达式和程序。创建变量有两种方式,一是使用val创建不可变变量(称为单一赋值的变量),二是使用var创建可变变量。如果试图对val变量进行更改,将提示错误。

清单1 Scala中的变量

$ scala

Welcome to Scala version 2.8.1.final (OpenJDK Client VM, Java 1.6.0_20).

Type in expressions to have them evaluated.

Type :help for more information.

scala> val a = 1

a: Int = 1

scala> var b = 2

b: Int = 2

scala> b = b + a

b: Int = 3

scala> a = 2

6: error: reassignment to val

a = 2

^

接下来,定义一个简单的函数,计算一个Int类型的平方并返回这个值。使用def定义函数,后面紧跟函数名和参数列表。不需要指定返回值,函数本身可以推断出返回值。注意,这与变量赋值操作类似。这里我演示了在3这个对象上执行这个函数,返回一个名为res0的结果变量(该变量是Scala解释器自动创建的)。见清单2。

清单2 Scala中的函数

scala> def square(x: Int) = x*x
square: (x: Int)Int
scala> square(3)
res0: Int = 9
scala> square(res0)
res1: Int = 81

接着,我们看看如何在Scala中创建简单的类(见清单3)。定义一个简单的类Dog,接受String类型的参数(相当于构造器)。注意这里类直接接受参数,而不需要在类主体中定义这个类参数。类中只有一个打印该字符串的函数。创建一个类的实例,然后调用这个函数。注意解释器会插入一些竖线,它们不是代码的一部分。

清单3 Scala中的类

scala> class Dog( name: String ) {
| def bark() = println(name + " barked")
| }
defined class Dog
scala> val stubby = new Dog("Stubby")
stubby: Dog = Dog@1dd5a3d
scala> stubby.bark
Stubby barked
scala>

完成工作以后,只需要敲入:quit就可以退出Scala解释器。

安装Scala和Spark

首先下载和配置Scala。清单4给出了Scala的下载命令,并准备安装。根据Spark文档,这里使用2.8版本。

清单4 Scala安装

$ wget http://www.scala-lang.org/downloads/distrib/files/scala-2.8.1.final.tgz
$ sudo tar xvfz scala-2.8.1.final.tgz --directory /opt/

为了使Scala可见,将以下语句添加到.bashrc文件中(假设你使用Bash):

export SCALA_HOME=/opt/scala-2.8.1.finalexport PATH=SCALAHOME/bin:PATH

然后按照清单5测试安装。这组命令加载bashrc文件,然后快速测试了Scala解释器。

清单5 配置并在交互模式下运行Scala

$ scala

Welcome to Scala version 2.8.1.final (OpenJDK Client VM, Java 1.6.0_20).

Type in expressions to have them evaluated.

Type :help for more information.

scala> println("Scala is installed!")

Scala is installed!

scala> :quit

$

现在可以看到Scala命令提示符了,输入:quit退出。注意Scala在JVM上下文中执行,所以还需要JVM。我用的是Ubuntu,默认自带了OpenJDK。

接下来,根据清单6获取最新的Spark框架。

清单6 下载和安装Spark框架

$ wget https://github.com/mesos/spark/tarball/0.3-scala-2.8/mesos-spark-0.3-scala-2.8-0-gc86af80.tar.gz
$ sudo tar xvfz mesos-spark-0.3-scala-2.8-0-gc86af80.tar.gz

然后,设置Spark配置文件 ./conf/spar-env.sh,添加SCALA_HOME环境变量:

export SCALA_HOME=/opt/scala-2.8.1.final

最后,使用简单构建工具(sbt, simple build tool)更新Spark。sbt是Scala的构建工具,Spark中也使用它。在mesos-spark-c86af80子目录下执行更新和编译:

$ sbt/sbt update compile

注意这一步需要连接到互联网。完成以后,按照清单7测试一下Spark。这个测试例子运行SparkPi计算pi的估计值(在单位正方形中随机取点)。命令格式是示例程序(spark.examples.SparkPi),加上主机参数(即定义Mesos master)。本例实在localhost上运行,因为这是一个单节点集群。注意清单7执行了两个任务,但是它们是顺序执行的(任务0结束后任务1才开始)。

把这个jar包添加到jre的ext目录下,集群所有机器都一样处理,再试试,不行重启下

linux搭建hadoop步骤linux搭建hadoop
答:在Linux系统中搭建Hadoop集群时,推荐使用稳定版本,如CentOS。以下是基于CentOS系统的Hadoop搭建步骤:1. 准备基础环境:- 安装并配置JDK。- 配置/etc/hosts文件,确保节点间能通过主机名相互访问。- 配置SSH无密码登录,以便在节点间执行命令。- 创建必要的文件目录,为Hadoop准备存储空间。2. 安装Hadoop...

高可用hadoop集群如何使用统一url进行调用
答:可以在HAProxy的配置文件中定义前端监听器,并将其绑定到一个虚拟IP地址上。2、配置Hadoop集群:在Hadoop集群中的每个节点上配置YARN和HDFS的客户端,并修改Hadoop的配置文件,将YARN和HDFS的服务地址修改为HAProxy的虚拟IP地址,以保证客户端可以通过HAProxy访问Hadoop集群。3、启动HAProxy:在HAProxy所在...

hadoop和spark不能部署在同一个集群中
答:资源竞争。Hadoop和Spark都需要大量的计算、内存和存储资源,两个框架在同一节点上运行时会存在资源竞争的问题,需要仔细调整资源分配情况。

如何基于Docker快速搭建多节点Hadoop集群
答:Docker最核心的特性之一,就是能够将任何应用包括Hadoop打包到Docker镜像中。这篇教程介绍了利用Docker在单机上快速搭建多 节点Hadoop集群的详细步骤。作者在发现目前的Hadoop on Docker项目所存在的问题之后,开发了接近最小化的Hadoop镜像,并且支持快速搭建任意节点数的Hadoop集群。 一. 项目简介 GitHub: kiwanlau/hadoop...

运行hadoop的wordcount时没有hadoop-***-core.jar文件
答:将你的项目打成jar包之后再hadoop集群里面运行,或者用Eclipse集成hadoop做测试。你这样直接在Eclipse里面写,是没办法运行的,就像你看了Java书在书上有一个helloword程序,然后你照着敲了一遍,然后直接在本机上运行,却忽略了你没装jdk一样,你的helloword是肯定没办法运行的 ...

如何基于Docker快速搭建多节点Hadoop集群
答:GitHub: kiwanlau/hadoop-cluster-docker 直接用机器搭建Hadoop集群是一个相当痛苦的过程,尤其对初学者来说。他们还没开始跑wordcount,可能就被这个问题折腾的体无完肤了。而且也不是每个人都有好几台机器对吧。你可以尝试用多个虚拟机搭建,前提是你有个性能杠杠的机器。我的目标是将Hadoop集群运行在...

hadoop平台运行模式有哪些有何异同
答:伪分布模式是在单机上模拟Hadoop分布式文件系统(HDFS)的运行环境,但HDFS的各个组件分布在多台机器上。在这种模式下,虽然只有一个NameNode,但实际上它负责管理整个HDFS集群,同时DataNode和TaskTracker也在各自的机器上运行。完全分布模式是真正的Hadoop集群运行模式,所有的组件分布在多台机器上,共同完成...

Kerberos在Hadoop安全中担任什么角色以及存在什么问题
答:加入Kerberos认证机制使得集群中的节点就是它们所宣称的,是信赖的。Kerberos可以将认证的密钥在集群部署时事先放到可靠的节点上。集群运行时,集群内的节点使用密钥得到认证。只有被认证过节点才能正常使用。企图冒充的节点由于没有事先得到的密钥信息,无法与集群内部的节点通信。kerberos实现的是机器级别的...

hadoop集群启动是否主要在主节点start-all.sh?
答:这个看你的部署,如果是伪分布式则直接start-all.sh就可以了。一般hadoop配置的时候都使用了ssh,没有这个是不能运行起来的。分布式的话,每台都必须配置ssh,以及一些其他的参数配置,这样配置好每台机器以后,只要在主节点使用start-all.sh就可以相应的启动所属的从节点的。

大数据 hadoop 三种运行模式的区别、及详细配置讲解
答:3、完全分布式模式 Hadoop守护进程运行在一个集群上 。这种运行模式也就是我们常见的各种云,主要用于大规模的生产环境中。注意:分布式要启动守护进程 ,是指在使用分布式hadoop时,要先启动一些准备程序进程,然后才能使用。 比如start-dfs.sh start-yarn.sh,而本地模式不需要启动这些守护进程。注意:在...

IT评价网,数码产品家用电器电子设备等点评来自于网友使用感受交流,不对其内容作任何保证

联系反馈
Copyright© IT评价网