spark集群从HDFS中读取数据并计算

一、             利用spark从hadoop的hdfs中读取数据并计算

1.1准备阶段

部署好hadoop分布式搭建(+zookeeper,6台机器)可以参考这篇博客:http://blog.csdn.net/vinsuan1993/article/details/70155112

 

主机名

IP

安装的程序

运行的进程

Heres01

192.168.2.108

jdk、hadoop、zookeeper、spark

DataNode

JournalNode

Master

QuorumPeerMain

NodeManager

Heres02

192.168.2.99

jdk、hadoop、zookeeper、spark

DataNode

JournalNode

Worker QuorumPeerMain

NodeManager

Heres03

192.168.2.109

jdk、hadoop、zookeeper、spark

DataNode

JournalNode

Worker QuorumPeerMain

NodeManager

Heres04

192.168.2.113

jdk、hadoop

ResourceManager

Heres05

192.168.2.112

jdk、hadoop

DFSZKFailoverController

 NameNode

Heres06

192.168.2.110

jdk、hadoop

DFSZKFailoverController

    NameNode

部署好spark集群,可以参考这篇博客:http://blog.csdn.net/vinsuan1993/article/details/75578441

1.2启动hdfs

1.2.1启动zookeeper集群(分别在heres01、heres02、heres03上启动zk)

cd/heres/zookeeper-3.4.5/bin/

./zkServer.shstart

#查看状态:一个leader,两个follower

./zkServer.shstatus

 

1.2.2启动journalnode(在heres01上启动所有journalnode,注意:是调用的hadoop-daemons.sh这个脚本,注意是复数s的那个脚本)

cd/heres/hadoop-2.2.0

sbin/hadoop-daemons.shstart journalnode

#运行jps命令检验,heres01、heres02、heres03上多了JournalNode进程

 

 

1.2.3启动HDFS(在heres01上执行)

sbin/start-dfs.sh

 

到此,hadoop2.2.0配置完毕,可以通过浏览器访问:

http://192.168.2.110:50070

NameNode'heres06:9000' (active)

http://192.168.2.112:50070

NameNode 'heres05:9000' (standby)

1.3.启动spark集群

/bigdata/spark-1.6.1-bin-hadoop2.6/sbin/start-all.sh

1.4.启动spark-shell

bin/spark-shell --masterspark://heres01:7077 --executor-memory 512m --total-executor-cores 2


注:“-”前面是没有空格的,否则会报错

1.5.上传文件到hdfs上

hdfs dfs-mkdir /wc

dfs dfs -ls  /

hdfs dfs-put words.txt /wc/1.log

hdfs dfs-put words.txt /wc/2.log

hdfs dfs -put words.txt /wc/3.log

1.6.在spark-shell中编写spark程序

sc.textFile("hdfs://heres06:9000/wc").flatMap(_.split("")).map((_,1)).reduceByKey(_+_).sortBy(_._2,false).collect


sc.textFile("hdfs://heres06:9000/wc").flatMap(_.split("")).map((_,1)).reduceByKey(_+_).sortBy(_._2,false).saveAsTextFile("hdfs://heres06:9000/vinout")

结果会生成三个文件


sc.textFile("hdfs://heres06:9000/wc").flatMap(_.split("")).map((_,1)).reduceByKey(_+_,1).sortBy(_._2,false).saveAsTextFile("hdfs://heres06:9000/vinout1")

结果会生成一个文件



  • 1
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
在Java Spark,你可以通过以下步骤从HDFS连接到HDFS并读取文件: 1. 首先,你需要导入必要的Spark和Hadoop依赖项。确保你的项目包含了以下依赖项: ```xml <dependencies> <!-- Spark dependencies --> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.11</artifactId> <version>2.4.7</version> </dependency> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-sql_2.11</artifactId> <version>2.4.7</version> </dependency> <!-- Hadoop dependencies --> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-hdfs</artifactId> <version>3.3.0</version> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-common</artifactId> <version>3.3.0</version> </dependency> </dependencies> ``` 2. 创建一个`SparkSession`对象,并设置相关的Hadoop配置。你可以使用`set`方法来设置以下配置: ```java import org.apache.spark.sql.SparkSession; SparkSession spark = SparkSession.builder() .appName("Read from HDFS") .master("local") // 设置为本地模式,你也可以根据实际情况设置为集群模式 .config("spark.hadoop.fs.defaultFS", "hdfs://localhost:9000") // 设置HDFS的默认文件系统 .getOrCreate(); ``` 3. 使用`spark.read()`方法读取HDFS文件。你需要传递文件路径作为参数,并且可以通过链式调用其他方法来进一步处理数据,例如`csv()`、`json()`等。 ```java import org.apache.spark.sql.Dataset; import org.apache.spark.sql.Row; String filePath = "hdfs://localhost:9000/path/to/file"; Dataset<Row> data = spark.read().csv(filePath); ``` 4. 对数据进行操作和处理。你可以使用Spark的DataFrame API或Spark SQL来操作读取的数据。 5. 最后,记得关闭SparkSession以释放资源: ```java spark.close(); ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值