Spark+Hadoop环境搭建

一、工具下载:

1、spark下载

目前最新的是2.1.1,spark 2.0开始api和之前的还是有比较多的变化,因此如果选择2.0以上版本,最好看一下api变化,下载地址:http://spark.apache.org/downloads.html

2、hadoop下载

目前最新的hadoop版本已经到了3.0了,可以根据你的选择需要的版本,下载地址:https://dist.apache.org/repos/dist/release/hadoop/common/

3、jdk下载,这个就不多说了,基本很多都用到,不过建议下载1.8以上的,这样避免出现兼容问题 

 

二、spark和hadoop基本介绍

1、Hadoop

Hadoop是一个开发和运行处理大规模数据的软件平台,是Appach的一个用java语言实现开源软件框架,实现在大量计算机组成的集群中对海量数据进行分布式计算

Hadoop的核心包括两块,一个是map/reduce操作,另一个是HDFS分布式文件系统,这个文件系统核心是NameNode和DataNode,前者负责记录文件树形结构,简单来说就是维护文件目录结构,以及每个文件对应在DataNode中的文件块属性。后者是用作数据存储用的,举个例子,如果你往HDFS里面放入一个文件,首先经过NameNode将文件信息记录下来,然后将它存放到各个DataNode中

2、Spark

Spark是专为大规模数据处理而设计的快速通用的计算引擎,里面封装了很多方便的api调用,可以把它看做是Hadoop的补充,虽然hadoop也能进行一些分布式计算,但是spark拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是Job中间输出结果可以保存在内存中,从而不再需要读写HDFS

 

三、开始搭建环境

1. 选择几个ubuntu的虚拟机,其中一个作为sparkmaster节点以及hadoop    NameNode节点,其他的作为slave节点和DataNode节点

 

2. 解压下载的sparkhadoop分别到目录/home/spark/home/hadoop

 

3. 配置ssh无秘钥登录

a) Master节点生成公钥

    ssh-keygen -t rsa -P '' #一路回车直到生成公钥

b) master生成的pub拷贝到worker(10.14.66.215)

    scp  /home/master/.ssh/id_rsa.pub

    10.14.66.215:/home/worker/.ssh/id_rsa.pub.master

c) 将自己生成的pub添加到授权列表里

    cat /home/master/.ssh/id_rsa.pub >> /home/master/.ssh/authorized_keys

d) worker节点中将masterpub添加到授权列表里

    cat /home/worker/.ssh/id_rsa.pub.master >> /home/worker/.ssh/authorized_keys  

 

4. 配置etc/profile,相当于环境变量

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export SPARK_HOME=/home/spark/spark-2.1.0-bin-hadoop2.6
export HADOOP_HOME=/home/hadoop/hadoop-2.6.1
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export PYTHONPATH=$PYTHONPATH:$SPARK_HOME/python
export SPARK_SCALA_VERSION=2.11
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$SPARK_HOME/bin

最后执行source /etc/profile让配置生效

注意:如果要使用python进行spark编程,那么必须将sparkpython路径加到PYTHONPATH中才行,就像上面的

export PYTHONPATH=$PYTHONPATH:$SPARK_HOME/python

另外SPARK_SCALA_VERSION2.0中需要加入的,因为每次分配任务给worker节点时都会检查当前的scala编译版本,没有这个设置就会报错找不到build directory,或者可以在SPARK_HOME目录下创建\launcher\target\scala-2.11空目录也能解决这个错误

 

5. 配置hadoopsparkslaves文件

a) 最好使用机器名作为节点名,下面会提到hadoop这方面的问题

b) 如果使用机器名的话,还需要配置/etc/hosts文件将对应的机器名和ip绑定

 

6. 配置hadoop

a) 进入$HADOOP_HOME/etc/hadoop/hadoop-env.sh

export JAVA_HOME=/usr/java/jdk1.8.0_112/

 

b) $HADOOP_HOME/etc/hadoop/core-site.xml

<configuration>
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://master:9000</value>
  </property>
  <property>
    <name>io.file.buffer.size</name>
    <value>131072</value>
  </property>
  <property>
    <name>hadoop.tmp.dir</name>
    <value>/opt/hadoop-2.7.3/tmp</value>
  </property>
</configuration>

注意:fs.defaultFS配置了默认的文件协议,后面代码中就默认加上hdfs://master:9000这个前缀

 

c) $HADOOP_HOME/etc/hadoop/hdfs-site.xml

<configuration>
  <property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>master:50090</value>
  </property>
  <property>
    <name>dfs.replication</name>
    <value>2</value>
  </property>
  <property>
    <name>dfs.namenode.name.dir</name>
    <value>file:/opt/hadoop-2.7.3/hdfs/name</value>
  </property>
  <property>
    <name>dfs.datanode.data.dir</name>
    <value>file:/opt/hadoop-2.7.3/hdfs/data</value>
  </property>
  <property>
    <name>dfs.namenode.datanode.registration.ip-hostname-check</name>
    <!--在Hadoop 2中,不可以被NameNode解析的DataNode将会被拒绝通信,如果没配置这个必须在hadoop/etc/slaves里面用机器名取代ip地址,然后在/etc/hosts里面加上这个机器名对应的ip地址-->
    <value>false</value>
  </property>
</configuration>

 

d) $HADOOP_HOME/etc/hadoop/mapred-site.xml

<configuration>
  <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>
  <property>
    <name>mapreduce.jobhistory.address</name>
    <value>master:10020</value>
  </property>
  <property>
    <name>mapreduce.jobhistory.address</name>
    <value>master:19888</value>
  </property>
</configuration>

e) $HADOOP_HOME/etc/hadoop/yarn-site.xml

<!-- Site specific YARN configuration properties -->
<configuration>
  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
  </property>
  <property>
    <name>yarn.resourcemanager.address</name>
    <value>master:8032</value>
  </property>
  <property>
    <name>yarn.resourcemanager.scheduler.address</name>
    <value>master:8030</value>
  </property>
  <property>
    <name>yarn.resourcemanager.resource-tracker.address</name>
    <value>master:8031</value>
  </property>
  <property>
    <name>yarn.resourcemanager.admin.address</name>
    <value>master:8033</value>
  </property>
  <property>
    <name>yarn.resourcemanager.webapp.address</name>
    <value>master:8088</value>
  </property>
</configuration>
注意: yarn 是作为资源管理器存在,每次提交一个任务时, spark 会做两件事,一个是将代码分成多个 stage ,每个 stage 相当于一个计算,然后再把 stage 分成多个 task ,每个 task 执行相同的操作,只不过操作的数据不同,这就和之前说的每个 DataNode 里面都存放着同一个文件的不同块联系起来了。然后 spark 做的另一件事就是向 yarn 资源管理器请求分配资源,资源管理器通过 NodeManager 提供的每个节点所在机器的内存、 CPU 等信息来分配一定的资源给这个任务

 

f) 最后格式化一下节点:

hdfs  namenode -format -force

注意:如果格式化namenode的时候没有强制格式化datanode,那么datanode里面关于namenode的信息就还是之前的,这样就找不到namenode了,所以要么每次格式化namenode前删除所有datanode,要么进行强制的格式化同时格式化namenodedatanode

 

7. 配置spark-env.sh

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64
export HADOOP_HOME=/home/hadoop/hadoop-2.6.1
export SPARK_MASTER_HOST=10.64.66.215
export SPARK_MASTER_PORT=7077
export SPARK_WORKER_MERMORY=2G
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export SPARK_SCALA_VERSION=2.11

注意:配置这些属性的时候最好根据源文件里面注释里提供的属性作为依据,因为不同版本的spark有些属性可能被废弃了,如果你按照网上查的去配置的话就会出问题,比如SPARK_MASTER_HOST2.0才加入的,之前用的是SPARK_MASTER_IP,在2.0已经被废弃了

 

8. 拷贝相关文件到worker节点:

先要修改worker节点的/home目录为可写权限

scp -r /home/hadoop/hadoop-2.6.1 10.14.66.127:/home/hadoop

scp -r /home/spark/spark-2.1.0-bin-hadoop2.7 10.14.66.127:/home/spark

 

9. 创建hdfs文件系统

hadoop fs -mkdir -p /Hadoop/Input

hadoop fs -put wordcount.txt /Hadoop/Input

注意:hdfs文件系统是由namenode来维护目录结构的,因此你在ubuntu上看不到具体的路径存放,只能通过hadoop fs命令来查看

 

10. 编辑测试代码

val file=sc.textFile("hdfs://master:9000/Hadoop/Input/wordcount.txt")
val rdd = file.flatMap(line => line.split(" ")).map(word => (word,1)).reduceByKey(_+_)
rdd.collect()
rdd.foreach(println)

注意:如果是在ubuntu上,hdfs://master:9000这个前缀可以不用加,因为hadoop中配置了默认的前缀就是它,但是在window上开发时需要加上

  

11. 搭建spark开发环境

    Hadoop和spark比较适合搭建在ubuntu上,但是我们开发就不方便了,因此我们可以在window上搭建master节点,然后其他的像hadoop和slave节点仍然使用ubuntu上搭建好的就行,具体做法是在window上搭好开发环境后,可以查看ubuntu上worker节点启动的log文件,第一行就是启动的命令,然后将命令里的master ip指定为window的ip,最后执行命令就能在那台ubuntu上启动一个worker节点了,hadoop完全不用变,因为window上仍然可以使用hdfs文件指定



  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 搭建大数据环境需要以下步骤: 1. 安装HadoopHadoop是一个分布式计算框架,用于处理大规模数据集。安装Hadoop需要下载Hadoop软件包,并进行配置。 2. 安装Hive:Hive是一个数据仓库工具,用于在Hadoop上进行数据分析和查询。安装Hive需要下载Hive软件包,并进行配置。 3. 安装SparkSpark是一个快速的大数据处理框架,用于在Hadoop上进行数据处理和分析。安装Spark需要下载Spark软件包,并进行配置。 4. 安装Zookeeper:Zookeeper是一个分布式协调服务,用于管理Hadoop集群中的节点。安装Zookeeper需要下载Zookeeper软件包,并进行配置。 5. 安装HBase:HBase是一个分布式的NoSQL数据库,用于存储和管理大规模数据。安装HBase需要下载HBase软件包,并进行配置。 以上是搭建大数据环境的基本步骤,需要根据实际情况进行具体的配置和调整。 ### 回答2: 随着互联网技术的不断发展,越来越多的数据被产生和需要处理,因此,搭建大数据环境成为了一项非常重要的工作。目前,Hadoop、Hive、Spark、Zookeeper、Hbase等大数据技术成为了最为重要的技术。下面,我们来详细介绍这些技术的大数据环境搭建。 1. Hadoop的安装 Hadoop是一个开源的分布式文件系统和数据处理框架,可以处理大规模数据的存储和处理。Hadoop的安装主要包括以下几个步骤: 1)安装JDK环境; 2)下载Hadoop的二进制包; 3)解压Hadoop的二进制包,并配置环境变量; 4)修改Hadoop的相关配置文件; 5)启动Hadoop。 2. Hive的安装 Hive是一个基于Hadoop的数据仓库工具,提供了类似于SQL的查询语言,可以用于大规模数据仓库的创建和查询。Hive的安装主要包括以下几个步骤: 1)安装JDK环境; 2)下载Hive的二进制包; 3)解压Hive的二进制包,并配置环境变量; 4)修改Hive的相关配置文件; 5)启动Hive。 3. Spark的安装 Spark是一个快速而通用的大数据处理引擎,可以执行大规模数据处理任务,并支持分布式计算。Spark的安装主要包括以下几个步骤: 1)安装JDK环境; 2)下载Spark的二进制包; 3)解压Spark的二进制包,并配置环境变量; 4)修改Spark的相关配置文件; 5)启动Spark。 4. Zookeeper的安装 Zookeeper是一个高性能分布式应用程序协调服务,可以用于协调和同步大规模集群中的应用程序。Zookeeper的安装主要包括以下几个步骤: 1)安装JDK环境; 2)下载Zookeeper的二进制包; 3)解压Zookeeper的二进制包,并配置环境变量; 4)修改Zookeeper的相关配置文件; 5)启动Zookeeper。 5. Hbase的安装 Hbase是一个基于Hadoop分布式非关系型数据库,提供了类似于Google的Bigtable的基于列的存储方式。Hbase的安装主要包括以下几个步骤: 1)安装JDK环境; 2)下载Hbase的二进制包; 3)解压Hbase的二进制包,并配置环境变量; 4)修改Hbase的相关配置文件; 5)启动Hbase。 在完成上述大数据技术的安装后,我们还需在使用时将它们进行整合,以达到更加高效的数据处理和管理。这些技术之间的整合一般都需要配置相关的XML文件和环境变量,具体操作可根据实际情况去修改和设置。小编建议,初学者应该多参考一些大佬的经验,互联网上有很多大牛分享了上述技术的搭建方法,读者可以多花些时间去学习和了解。 ### 回答3: 随着现代信息技术的不断发展,大数据的应用越来越广泛。作为目前大数据环境的主流组件,Hadoop、Hive、Spark、Zookeeper和HBase都是大数据领域的重要工具。为了能够更好地进行大数据分析和处理,需要对这些工具进行合理的搭建和配置。 1. Hadoop的搭建 Hadoop是一个分布式存储和计算的框架,搭建Hadoop需要安装JAVA环境,并下载相应的Hadoop压缩包。将Hadoop解压到本地目录,在安装文件中设置JAVA_HOME和HADOOP_HOME环境变量。启动Hadoop需要先启动NameNode和DataNode,然后启动JobTracker和TaskTracker。搭建好Hadoop后,还需要使用HDFS命令行或Hadoop API进行文件的上传、下载、删除等基本操作。 2. Hive的搭建 Hive是一个基于Hadoop的数据仓库工具,可以将结构化数据映射到Hadoop的存储系统中。Hive搭建需要先安装JAVA环境和Hadoop,然后下载并解压Hive压缩包。将Hive和Hadoop的配置文件进行关联,启动Hive服务时需要启动Metastore和HiveServer2服务。搭建完成后,可以使用HiveQL语句进行数据的查询、插入、删除等操作。 3. Spark的搭建 Spark是一个快速通用的大数据计算引擎,可用于数据分析、机器学习等场景。Spark搭建需要安装JAVA和Scala等相关组件,并下载Spark压缩包。将Spark解压到本地目录后,设置SPARK_HOME环境变量以及Hadoop和YARN的配置相关参数。启动Spark服务时需要先启动Master和Slave节点。搭建完成后,可以使用Spark Shell和Spark SQL进行数据处理和分析。 4. Zookeeper的搭建 Zookeeper是一个分布式的协调服务,可以用于管理各类分布式应用程序的配置和信息。将Zookeeper下载并解压到本地目录,设置ZOOKEEPER_HOME环境变量,并修改Zoo.cfg配置文件中的端口号、数据目录等相关参数。启动Zookeeper服务时需要先启动一个Leader和多个Follower。搭建完成后,可以使用ZooKeeper API对Zookeeper的节点进行管理和配置。 5. HBase的搭建 HBase是一个列存储数据库,可以在Hadoop上提供实时读写服务。HBase搭建需要安装JAVA环境、Hadoop和Zookeeper,并下载HBase压缩包。将HBase解压到本地目录,并进行相关配置,比如修改HBase-site.xml配置文件的参数、设置HBASE_HOME环境变量等。启动HBase服务前需要先启动Zookeeper服务。搭建完成后,可以使用Java API或HBase Shell进行数据的读写操作。 综上所述,搭建大数据环境需要先安装基础的JAVA环境和相关组件,然后根据各个工具的安装包进行相应的配置和启动,最后进行测试和调试。在搭建过程中需要注意版本、路径等问题,避免出现配置错误。经过搭建和调试后,可以使用这些工具进行海量数据的分析和处理,为企业的决策提供有力的支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值