基于hadoop搭建spark 测试demo

参考自 :
http://www.jianshu.com/p/aa6f3a366727
http://www.powerxing.com/install-hadoop/

我利用两台机器搭建测试。

为了解决hdfs地址绑定127.0.0.1,修改和hostname。
分别修改/etc/sysconfig/network;/etc/hosts;hostname testdata;
重新登录,搞定。
testdata
testdesk

1.下载最新的hadoop :http://hadoop.apache.org/releases.html
hadoop-2.7.3.tar.gz

2.下载最新的spark:https://spark.apache.org/downloads.html
这里下载的是spark-2.2.0-bin-hadoop2.7.tgz

3.搭建java环境 && 搭建scala环境 (搭建配置方法十分相似)。分别校验java -version ;scala -version

4.在两台机器上分别创建hadoop用户并授权(ubuntu和centos稍微不同),然后两台机器设置互信(当前用户目录下的.ssh下各自执行ssh-keygen -t rsa ;分别复制id_rsa.pub文件内容添加到其他机器的authorized_keys里面 ,ok。如果目录或者文件不存在手动创建。)。为了简单,直接解压hadoop ,spark到/home/hadoop目录下。

5.进入解压的hadoop目录下。cd /home/hadoop/hadoop-2.7.3;
配置hadoop 的7个文件。cd etc/hadoop;(最新版本的配置请参考官网)。

1.在hadoop-env.sh中配置JAVA_HOME

2.在yarn-env.sh中配置JAVA_HOME

3.在slaves中配置slave节点的ip或者host,
 testdesk(172.16.10.21)

4.core-site.xml 
...
    <configuration>
        <property>
        <name>fs.defaultFS</name>
        <value>hdfs://172.16.10.20:9000/</value>
        </property>
        <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/home/hadoop/hadoop/tmp</value>
        </property>
    </configuration>

5.hdfs-site.xml
...
<configuration>
        <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>172.16.10.20:9001</value>
        </property>
        <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/home/hadoop/hadoop/dfs/name</value>
        </property>
        <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/home/hadoop/hadoop/dfs/data</value>
        </property>
        <property>
        <name>dfs.replication</name>
        <value>3</value>
        </property>
</configuration>


6.修改mapred-site.xml
...
<configuration>
    <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
    </property>
</configuration>

7.修改yarn-site.xml
...
<configuration>
        <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
        </property>
        <property>
        <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
        <value>org.apache.hadoop.mapred.ShuffleHandler</value>
        </property>
        <property>
        <name>yarn.resourcemanager.address</name>
        <value>172.16.10.20:8032</value>
        </property>
        <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>172.16.10.20:8030</value>
        </property>
        <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>172.16.10.20:8035</value>
        </property>
        <property>
        <name>yarn.resourcemanager.admin.address</name>
        <value>172.16.10.20:8033</value>
        </property>
        <property>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>172.16.10.20:8088</value>
        </property>
</configuration>

把这些文件原封不动地发一份到从机器。

6.配置ok,启动 hadoop
cd /home/hadoop/hadoop-2.7.3;
先格式化 namenode

bin/hadoop namenode -format

成功之后

启动hdfs sbin/start-dfs.sh
关闭使用  sbin/stop-dfs.sh

输入 jps 命令
master 可以看到 NameNode和 SecondaryNameNode。
slaves 可以看到 DataNode

成功之后

启动yarn sbin/start-yarn.sh
关闭使用  sbin/stop-yarn.sh

输入 jps 命令
master 可以看到 ResourceManager
slaves 可以看到 NodeManager

分别在浏览器输入 testdataIp:50070 testdataIP:8088 查看

7.配置spark ( 根据自己的环境各异 )

cd /home/hadoop/spark-2.2.0-bin-hadoop2.7;
cd conf;
 cp spark-env.sh.template spark-env.sh;
 修改spark-env.sh
 export SPARK_HOME=/home/hadoop/spark-2.2.0-bin-hadoop2.7
export SCALA_HOME=/usr/local/scala-2.12.2
export JAVA_HOME=/usr/local/jdk1.8.0
export HADOOP_HOME=/home/hadoop/hadoop-2.7.3
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$SCALA_HOME/bin
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export YARN_CONF_DIR=$YARN_HOME/etc/hadoop
export SPARK_MASTER_IP=172.16.10.20
SPARK_LOCAL_DIRS=/home/hadoop/spark-2.2.0-bin-hadoop2.7
SPARK_DRIVER_MEMORY=100m
export SPARK_LIBARY_PATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$HADOOP_HOME/lib/native

将配置原封不动发一份到slaves 机器;

启动 cd /home/hadoop/spark-2.2.0-bin-hadoop2.7;

sbin/start-all.sh;

成功启动输入 jps
master 可以看到 Master
slaves 可以看到 Worker
浏览器输入testdataIp:8080
能看到 Workers 下面配置的slaves 机器及成功。

8.测试spark

ideal 集成scala 只需要添加一个插件即可,自行百度即可解决。

简单的scala代码如下
摘自 http://blog.csdn.net/trigl/article/details/70256914

import org.apache.spark.{SparkConf, SparkContext}

/**
  * Copyright (c) 2017/7/27 by ShaoYongJun
  * Company: Zoomy 
  */
object SparkDemo {
  // args:/test/test.log
  def main(args: Array[String]) {

    // 设置Spark的序列化方式
    System.setProperty("spark.serializer", "org.apache.spark.serializer.KryoSerializer")

    // 初始化Spark
    val sparkConf = new SparkConf().setAppName("CountDemo")
    val sc = new SparkContext(sparkConf)

    // 读取文件
    val rdd = sc.textFile(args(0))

    println(args(0) + "的行数为:" + rdd.count())

    sc.stop()
  }
}

然后按照流程流程打包发布,测试。

我本地的测试机器配置比较低,测试一直报错,网上搜索得知是配置不够的原因,在测试的时候调整即可。
为了简单,上传好jar (我的jar包是 spark.jar )之后的测试的代码如下

bin/spark-submit  --master spark://testdata.localdomain:7077  --executor-memory 512m --driver-memory 512m --executor-cores 2  --class com.SparkDemo ./spark.jar /README.md 

spark 测试

SparkSession 类替换了 Spark2.0 中的 SparkContext 和 SQLContext 
,并为Spark集群提供了 "唯一的入口点"。
So I could do like this
val sb=spark.read.parquet("/apps-data/event_log/event_log.20170827.parquet");
 sb.registerTempTable("table");
  spark.sql("select * from table limit 3").show();
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值