只会python,能学会hadoop吗?

[复制链接]
loyowo 发表于 2023-10-3 19:49:03|来自:河北石家庄 | 显示全部楼层 |阅读模式
只会python,能学会hadoop吗?
全部回复5 显示全部楼层
dreamvs 发表于 2023-10-3 19:49:43|来自:河北石家庄 | 显示全部楼层
教你用Python 编写 Hadoop MapReduce 程序,一起康康吧:

随着数字媒体、物联网等发展的出现,每天产生的数字数据量呈指数级增长。这种情况给创建下一代工具和技术来存储和操作这些数据带来了挑战。这就是 Hadoop Streaming 的用武之地!下面给出的图表描绘了从2013年起全球每年产生的数据增长情况。IDC估计,到 2025年,每年产生的数据量将达到180 Zettabytes!


IBM 表示,每天有近 2.5 千万字节的数据被创建,其中 90% 的世界数据是在过去两年中创建的!存储如此庞大的数据量是一项具有挑战性的任务。Hadoop 可以比传统的企业数据仓库更有效地处理大量结构化和非结构化数据。它跨分布式计算机集群存储这些庞大的数据集。Hadoop Streaming 使用 MapReduce 框架,该框架可用于编写应用程序来处理海量数据。
由于 MapReduce 框架基于 Java,您可能想知道如果开发人员没有 Java 经验,他/她如何工作。好吧,开发人员可以使用他们喜欢的语言编写 mapper/Reducer 应用程序,而无需掌握太多 Java 知识,使用Hadoop Streaming而不是切换到 Pig 和 Hive 等新工具或技术。
什么是 Hadoop 流?

Hadoop Streaming 是 Hadoop 发行版附带的实用程序。它可用于执行大数据分析程序。Hadoop 流可以使用 Python、Java、PHP、Scala、Perl、UNIX 等语言执行。该实用程序允许我们使用任何可执行文件或脚本作为映射器和/或化简器来创建和运行 Map/Reduce 作业。例如:
  1. $HADOOP_HOME/bin/hadoop jar $HADOOP_HOME/hadoop-streaming.jar
  2. -input myInputDirs
  3. -输出我的输出目录
  4. -文件夹/垃圾箱/猫
  5. -减速器/bin/wc
复制代码
参数说明:



Python MapReduce 代码:
  1. mapper.py
  2. #!/usr/bin/python
  3. import sys
  4. #Word Count Example
  5. # input comes from standard input STDIN
  6. for line in sys.stdin:
  7. line = line.strip() #remove leading and trailing whitespaces
  8. words = line.split() #split the line into words and returns as a list
  9. for word in words:
  10. #write the results to standard output STDOUT
  11. print'%s    %s' % (word,1) #Emit the word
复制代码

reducer.py
  1. #!/usr/bin/python
  2. import sys
  3. from operator import itemgetter
  4. # using a dictionary to map words to their counts
  5. current_word = None
  6. current_count = 0
  7. word = None
  8. # input comes from STDIN
  9. for line in sys.stdin:
  10. line = line.strip()
  11. word,count = line.split('   ',1)
  12. try:
  13. count = int(count)
  14. except ValueError:
  15. continue
  16. if current_word == word:
  17. current_count += count
  18. else:
  19. if current_word:
  20. print '%s   %s' % (current_word, current_count)
  21. current_count = count
  22. current_word = word
  23. if current_word == word:
  24. print '%s   %s' % (current_word,current_count)
复制代码

跑:


  • 创建一个包含以下内容的文件并将其命名为 word.txt。
猫鼠狮鹿虎狮象狮鹿

  • 将 mapper.py 和 reducer.py 脚本复制到上述文件所在的同一文件夹中。



  • 打开终端并找到文件所在的目录。 命令:ls:列出目录中的所有文件cd:更改目录/文件夹



  • 查看文件的内容。
命令:cat file_name


> mapper.py 的内容
命令:cat mapper.py


>reducer.py 的内容
命令:cat reducer.py




我们可以在本地文件(例如:word.txt)上运行 mapper 和 reducer。为了在 Hadoop 分布式文件系统 (HDFS) 上运行 Map 和 Reduce,我们需要Hadoop Streaming jar。所以在我们在 HDFS 上运行脚本之前,让我们在本地运行它们以确保它们工作正常。
>运行映射器
命令:cat word.txt | python mapper.py


>运行reducer.py
命令: cat word.txt | python mapper.py | sort -k1,1 | python reducer.py


我们可以看到映射器和减速器按预期工作,因此我们不会面临任何进一步的问题。
在 Hadoop 上运行Python 代码

在我们在 Hadoop 上运行 MapReduce 任务之前,将本地数据(word.txt)复制到 HDFS
> 示例:hdfs dfs -put source_directory hadoop_destination_directory
命令:hdfs dfs -put /home/edureka/MapReduce/word.txt /user/edureka


复制jar文件的路径

基于jar版本的Hadoop Streaming jar路径为:
/usr/lib/hadoop-2.2.X/share/hadoop/tools/lib/hadoop-streaming-2.2.X.jar
因此,在您的终端上找到 Hadoop Streaming jar 并复制路径。
命令:
ls /usr/lib/hadoop-2.2.0/share/hadoop/tools/lib/hadoop-streaming-2.2.0.jar


运行 MapReduce 作业

命令:
hadoop jar /usr/lib/hadoop-2.2.0/share/hadoop/tools/lib/hadoop-streaming-2.2.0.jar -file /home/edureka/mapper.py -mapper mapper.py -file /home/ edureka/reducer.py -reducer reducer.py -input /user/edureka/word -output /user/edureka/Wordcount




Hadoop 为统计和信息提供了一个基本的 Web 界面。当 Hadoop 集群运行时,在浏览器中打开 http://localhost:50070。这是 Hadoop Web 界面的屏幕截图。


现在浏览文件系统并找到生成的 wordcount 文件以查看输出。下面是截图。


我们可以使用这个命令在终端上看到输出
命令:hadoop fs -cat /user/edureka/Wordcount/part-00000


您现在已经学会了如何使用 Hadoop Streaming 执行用 Python 编写的 MapReduce 程序!
本文分享自华为云社区《Hadoop Streaming:用 Python 编写 Hadoop MapReduce 程序》,作者:Donglian Lin。
点击关注,第一时间了解华为云新鲜技术~
if1001 发表于 2023-10-3 19:50:03|来自:河北石家庄 | 显示全部楼层
如果只是用Hadoop,Python就够了。比如HDFS的读写文件,写个MapReduce程序,写个Hive query的模板,都可以用Python搞定。
如果要为Hadoop贡献代码的话,https://github.com/apache/hadoop 显示这个项目目前有92.7%的Java代码,2.9%的C++代码,2.0%的C代码,只会Python显然是不行的。
另外,Hadoop是个很大的概念,最好从某个应用入手,而且Hadoop名气越来越小了,巅峰时期早已过去。
nvzitea 发表于 2023-10-3 19:50:58|来自:河北石家庄 | 显示全部楼层
首先Hadoop框架是Java语言开发的,要有Java基础和Linux基础会更好一些,但是Python也不是不可以,处理大规模数据分析与挖掘用的上,而且Python可以直接调用里面的接口,省事
54down 发表于 2023-10-3 19:51:31|来自:河北石家庄 | 显示全部楼层
学习大数据的基本步骤。向深入必须java好。
http://mp.weixin.qq.com/s/nlNLWs0imniBSQTAgrw74A
bluestardm 发表于 2023-10-3 19:51:48|来自:河北石家庄 | 显示全部楼层
可以的  如果你要看源码的话  得会java   还有linux会一些

快速回帖

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则