1. 如何在CDH 5上运行Spark应用程序
创建 maven 工程使用下面命令创建一个普通的 maven 工程:bash$ mvn archetype:generate -DgroupId=com.cloudera.sparkwordcount -DartifactId=sparkwordcount -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false将 sparkwordcount 目录重命名为simplesparkapp,然后,在 simplesparkapp 目录下添加 scala 源文件目录:bash$ mkdir -p sparkwordcount/src/main/scala/com/cloudera/sparkwordcount修改 pom.xml 添加 scala 和 spark 依赖:。
2. word count是什么意思
word count 英[w?:d kaunt] 美[w?d ka?nt]
n. 字数; 字计数;
[例句]Wc is an acronym for word count; wc can count characters, words, and lines.
wc为word count的首字母缩写,wc可统计字符、单词和行数。
根据你的描述,这是文字计数的意思,表面你这篇文字共打了多少个字。
3. 如何debug WordCount?
mapreduce调试:
调试的方法有多种,这里说一种最简单、原始的一种。
记得Javascript刚开始之初是不能调试的,于是我们就采用alert的方法,看看结果是不是我们想要的,这里我们调试mapreduce采用的是类似的方法。我们通过 Counter countPrint1 = context.getCounter("Map中循环strScore", “输出信息”);来输出调试信息, getCounter可以把程序里面的变量输出到Java控制台,这样就达到了调试效果。
详细参考:
Hadoop中调试(mapreduce)map与redcue信息的输出办法
当然还有其他调试方法,可以参考下面
Win7 Eclipse调试Centos Hadoop2.2-Mapreduce出现问题解决方案
调试Hadoop源代码:eclipse调试及日志打印
来自: 零基础学习hadoop到上手工作线路指导(编程篇)
4. 如何在CDH5上运行Spark应用
创建 maven 工程
使用下面命令创建一个普通的 maven 工程:
$ mvn archetype:generate -DgroupId=com.cloudera.sparkwordcount -DartifactId=sparkwordcount -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
在 sparkwordcount 目录下添加 scala 源文件目录和相应的包目录:
$ mkdir -p sparkwordcount/src/main/scala/com/cloudera/sparkwordcount
修改 pom.xml 添加 scala 和 spark 依赖:
org.scala-langscala-library2.10.4org.apache.sparkspark-core_2.101.3.0org.apache.sparkspark-sql_2.101.3.0
添加编译 scala 的插件:
org.scala-toolsmaven-scala-plugincompiletestCompile
添加 scala 编译插件需要的仓库:
scala-tools.orgScala-tools Maven2 Repositoryscala-tools.org/repo-releases
另外,添加 cdh hadoop 的仓库:
scala-tools.orgScala-tools Maven2 Repositoryscala-tools.org/repo-releasesmaven-hadoopHadoop Releasesrepository.cloudera.com/content/repositories/releases/cloudera-reposCloudera Reposrepository.cloudera.com/artifactory/cloudera-repos/
运行下面命令检查工程是否能够成功编译:
mvn package
5. 如何在CDH5上运行Spark应用
创建 maven 工程使用下面命令创建一个普通的 maven 工程:bash$ mvn archetype:generate -DgroupId=com.cloudera.sparkwordcount -DartifactId=sparkwordcount -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false将 sparkwordcount 目录重命名为simplesparkapp,然后,在 simplesparkapp 目录下添加 scala 源文件目录:bash$ mkdir -p sparkwordcount/src/main/scala/com/cloudera/sparkwordcount修改 pom.xml 添加 scala 和 spark 依赖:xml
运行下面命令检查工程是否能够成功编译:bashmvn package编写示例代码以 WordCount 为例,该程序需要完成以下逻辑:读一个输入文件统计每个单词出现次数过滤少于一定次数的单词对剩下的单词统计每个字母出现次数在 MapReduce 中,上面的逻辑需要两个 MapReduce 任务,而在 Spark 中,只需要一个简单的任务,并且代码量会少 90%。编写 Scala 程序 如下:scalaimport org.apache.spark.SparkContextimport org.apache.spark.SparkContext._import org.apache.spark.SparkConfobject SparkWordCount { def main(args: Array[String]) { val sc = new SparkContext(new SparkConf().setAppName("Spark Count")) val threshold = args(1).toInt // split each document into words val tokenized = sc.textFile(args(0)).flatMap(_.split(" ")) // count the occurrence of each word val wordCounts = tokenized.map((_, 1)).reduceByKey(_ + _) // filter out words with less than threshold occurrences val filtered = wordCounts.filter(_._2 >= threshold) // count characters val charCounts = filtered.flatMap(_._1.toCharArray).map((_, 1)).reduceByKey(_ + _) System.out.println(charCounts.collect().mkString(", ")) charCounts.saveAsTextFile("world-count-result") }}Spark 使用懒执行的策略,意味着只有当 动作 执行的时候, 转换 才会运行。
上面例子中的 动作 操作是 collect 和 saveAsTextFile ,前者是将数据推送给客户端,后者是将数据保存到 HDFS。作为对比, Java 版的程序 如下:javaimport java.util.ArrayList;import java.util.Arrays;import org.apache.spark.api.java.*;import org.apache.spark.api.java.function.*;import org.apache.spark.SparkConf;import scala.Tuple2;public class JavaWordCount { public static void main(String[] args) { JavaSparkContext sc = new JavaSparkContext(new SparkConf().setAppName("Spark Count")); final int threshold = Integer.parseInt(args[1]); // split each document into words JavaRDD tokenized = sc.textFile(args[0]).flatMap( new FlatMapFunction() { public Iterable call(String s) { return Arrays.asList(s.split(" ")); } } ); // count the occurrence of each word JavaPairRDD counts = tokenized.mapToPair( new PairFunction() { public Tuple2 call(String s) { return new Tuple2(s, 1); } } ).reduceByKey( new Function2() { public Integer call(Integer i1, Integer i2) { return i1 + i2; } } );另外, Python 版的程序 如下:pythonimport sysfrom pyspark import SparkContextfile="inputfile.txt"count=2if __name__ == "__main__": sc = SparkContext(appName="PythonWordCount") lines = sc.textFile(file, 1) counts = lines.flatMap(lambda x: x.split(' ')) \ .map(lambda x: (x, 1)) \ .reduceByKey(lambda a, b: a + b) \ .filter(lambda (a, b) : b >= count) \ .flatMap(lambda (a, b): list(a)) \ .map(lambda x: (x, 1)) \ .reduceByKey(lambda a, b: a + b) print ",".join(str(t) for t in counts.collect(。
6. 如何运行自带wordcount
1.找到examples例子
我们需要找打这个例子的位置:首先需要找到你的hadoop文件夹,然后依照下面路径:
/hadoop/share/hadoop/mapreduce会看到如下图:
hadoop-mapreduce-examples-2.2.0.jar
第二步:
我们需要需要做一下运行需要的工作,比如输入输出路径,上传什么文件等。
1.先在HDFS创建几个数据目录:
hadoop fs -mkdir -p /data/wordcount
hadoop fs -mkdir -p /output/
2.目录/data/wordcount用来存放Hadoop自带的WordCount例子的数据文件,运行这个MapReduce任务的结果输出到/output/wordcount目录中。
首先新建文件inputWord:
vi /usr/inputWord
新建完毕,查看内容:
cat /usr/inputWord
将本地文件上传到HDFS中:
hadoop fs -put /usr/inputWord /data/wordcount/
可以查看上传后的文件情况,执行如下命令:
hadoop fs -ls /data/wordcount
可以看到上传到HDFS中的文件。
通过命令
hadoop fs -text /data/wordcount/inputWord
看到如下内容:
下面,运行WordCount例子,执行如下命令:
hadoop jar /usr/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar wordcount /data/wordcount /output/wordcount
可以看到控制台输出程序运行的信息
查看结果,执行如下命令:
hadoop fs -text /output/wordcount/part-r-00000
结果数据示例如下:
登录到Web控制台,访问链接http.//master:8088/可以看到任务记录情况。
7. 如何运行自带wordcount
1.找到examples例子
我们需要找打这个例子的位置:首先需要找到你的hadoop文件夹,然后依照下面路径:
/hadoop/share/hadoop/mapreduce会看到如下图:
hadoop-mapreduce-examples-2.2.0.jar
第二步:
我们需要需要做一下运行需要的工作,比如输入输出路径,上传什么文件等。
1.先在HDFS创建几个数据目录:
hadoop fs -mkdir -p /data/wordcount
hadoop fs -mkdir -p /output/
2.目录/data/wordcount用来存放Hadoop自带的WordCount例子的数据文件,运行这个MapReduce任务的结果输出到/output/wordcount目录中。
首先新建文件inputWord:
vi /usr/inputWord
新建完毕,查看内容:
cat /usr/inputWord
将本地文件上传到HDFS中:
hadoop fs -put /usr/inputWord /data/wordcount/
可以查看上传后的文件情况,执行如下命令:
hadoop fs -ls /data/wordcount
可以看到上传到HDFS中的文件。
通过命令
hadoop fs -text /data/wordcount/inputWord
看到如下内容:
下面,运行WordCount例子,执行如下命令:
hadoop jar /usr/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar wordcount /data/wordcount /output/wordcount
可以看到控制台输出程序运行的信息
查看结果,执行如下命令:
hadoop fs -text /output/wordcount/part-r-00000
结果数据示例如下:
登录到Web控制台,访问链接http.//master:8088/可以看到任务记录情况。
转载请注明出处51数据库 » cdh5wordcount
妹子别慌-我又不乱来