执行wordcount例子报异常

本文介绍了三种Hadoop任务失败的情况,并提供了相应的解决方法。包括设置JAVA_HOME环境变量、配置mapred-site.xml文件中的HADOOP_MAPRED_HOME路径以及调整yarn-site.xml中的虚拟内存限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

异常一:
2018-01-09 02:50:43,320 INFO mapreduce.Job: Job job_1515466125577_0002 failed with state FAILED due to: Application application_1515466125577_0002 failed 2 times due to AM Container for appattempt_1515466125577_0002_000002 exited with exitCode: 127
Failing this attempt.Diagnostics: [2018-01-09 02:50:42.706]Exception from container-launch.
Container id: container_1515466125577_0002_02_000001
Exit code: 127


[2018-01-09 02:50:42.750]Container exited with a non-zero exit code 127. Error file: prelaunch.err.
Last 4096 bytes of prelaunch.err :
Last 4096 bytes of stderr :
/bin/bash: /bin/java: No such file or directory


解决方法:在中添加adoop-3.0.0/libexec/hadoop-config.sh文件中添加JAVA_HOME环境变量




异常二:
2018-01-09 03:25:37,250 INFO mapreduce.Job: Job job_1515468264727_0001 failed with state FAILED due to: Application application_1515468264727_0001 failed 2 times due to AM Container for appattempt_1515468264727_0001_000002 exited with exitCode: 1
Failing this attempt.Diagnostics: [2018-01-09 03:25:36.447]Exception from container-launch.
Container id: container_1515468264727_0001_02_000001
Exit code: 1


[2018-01-09 03:25:36.499]Container exited with a non-zero exit code 1. Error file: prelaunch.err.
Last 4096 bytes of prelaunch.err :
Last 4096 bytes of stderr :
Error: Could not find or load main class org.apache.hadoop.mapreduce.v2.app.MRAppMaster


Please check whether your etc/hadoop/mapred-site.xml contains the below configuration:
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=${full path of your hadoop distribution directory}</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=${full path of your hadoop distribution directory}</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=${full path of your hadoop distribution directory}</value>
</property>
解决方法:按错误提示,在mapred-site.xml配置文件中添加hadoop根目录


异常三:
2018-01-09 03:55:18,863 INFO mapreduce.Job: Job job_1515470038765_0001 failed with state FAILED due to: Application application_1515470038765_0001 failed 2 times due to AM Container for appattempt_1515470038765_0001_000002 exited with exitCode: -103
Failing this attempt.Diagnostics: [2018-01-09 03:55:17.480]Container [pid=728,containerID=container_1515470038765_0001_02_000001] is running beyond virtual memory limits. Current usage: 146.5 MB of 1 GB physical memory used; 2.7 GB of 2.1 GB virtual memory used. Killing container.
Dump of the process-tree for container_1515470038765_0001_02_000001 :
|- PID PPID PGRPID SESSID CMD_NAME USER_MODE_TIME(MILLIS) SYSTEM_TIME(MILLIS) VMEM_USAGE(BYTES) RSSMEM_USAGE(PAGES) FULL_CMD_LINE
|- 741 728 728 728 (java) 634 19 2852925440 37258 /usr/local/jdk1.8.0_131/bin/java -Djava.io.tmpdir=/home/hadoop/tmp/nm-local-dir/usercache/hadoop/appcache/application_1515470038765_0001/container_1515470038765_0001_02_000001/tmp -Dlog4j.configuration=container-log4j.properties -Dyarn.app.container.log.dir=/home/hadoop/hadoop-3.0.0/logs/userlogs/application_1515470038765_0001/container_1515470038765_0001_02_000001 -Dyarn.app.container.log.filesize=0 -Dhadoop.root.logger=INFO,CLA -Dhadoop.root.logfile=syslog -Xmx1024m org.apache.hadoop.mapreduce.v2.app.MRAppMaster
解决方法:在yarn-site.xml中添加以下配置
<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>5</value>
<description>Ratio between virtual memory to physical memory when setting memory limits
for containers. Container allocations are expressed in terms of physical memory, and
virtual memory usage is allowed to exceed this allocation by this ratio.</description>
</property>
<think>好的,我现在需要帮用户介绍Python使用Flink的例子。首先,用户之前问了关于ISA-95标准的问题,现在转到了Python和Flink,可能是在工业自动化或数据处理方面的应用。用户可能有一定的技术背景,想了解如何用Python结合Flink进行实时数据处理或者流处理。 首先,我要确认Flink对Python的支持情况。Apache Flink主要用Java和Scala编写,但通过PyFlink,用户可以用Python API来编写作业。需要说明PyFlink的版本兼容性,比如Flink 1.9之后开始支持Python,现在可能已经更新到更高版本了。 接下来,用户可能需要一个简单的例子来入门。我应该选择一个典型的流处理案例,比如WordCount,这是大数据领域的经典例子,容易理解。另外,可能需要介绍安装步骤,确保用户能顺利运行示例。 另外,用户可能对实际应用场景感兴趣,比如实时数据分析、事件驱动应用或者ETL处理,需要举一些实际例子,比如日志分析、实时监控等。同时,需要指出PyFlink的局限性,比如某些高级功能可能不如Java API完善,性能也可能有差异。 还要注意代码的结构,确保用户能复制并运行示例,可能需要提醒安装必要的依赖,比如Java环境,PyFlink的安装命令。此外,需要解释代码的每一步,让用户理解数据处理的流程,比如Source、Transformation、Sink。 最后,总结PyFlink的优势和适用场景,帮助用户判断是否适合他们的项目需求。可能还需要提到社区支持和学习资源,方便用户进一步探索。</think>以下是使用Python(通过**PyFlink**)编写Apache Flink流处理任务的示例及关键步骤解析: --- ### **1. 环境准备** - **安装PyFlink**: ```bash pip install apache-flink ``` - **依赖**:确保本地已安装Java 8+(Flink运行需要Java环境)。 --- ### **2. 简单示例:实时单词计数(WordCount)** #### **代码实现** ```python from pyflink.datastream import StreamExecutionEnvironment from pyflink.datastream.functions import MapFunction, FlatMapFunction # 创建执行环境 env = StreamExecutionEnvironment.get_execution_environment() # 定义数据源(模拟实时输入) source_data = env.from_collection(["hello world", "hello flink", "flink is powerful"]) # 数据处理逻辑 class SplitWords(FlatMapFunction): def flat_map(self, value): return value.lower().split() class CountWords(MapFunction): def __init__(self): self.word_counts = {} def map(self, value): self.word_counts[value] = self.word_counts.get(value, 0) + 1 return (value, self.word_counts[value]) # 执行任务 result = ( source_data .flat_map(SplitWords()) # 拆分单词 .map(CountWords()) # 统计词频 .print() # 输出结果 ) env.execute("Python Flink WordCount") ``` #### **运行结果** ``` (hello, 1) (world, 1) (hello, 2) (flink, 1) (flink, 2) (is, 1) (powerful, 1) ``` --- ### **3. 核心概念解析** #### **3.1 数据流结构** - **Source**:`from_collection`模拟实时输入流。 - **Transformation**: - `flat_map`:拆分句子为单词(一对多转换)。 - `map`:统计每个单词的出现次数。 - **Sink**:`print()`将结果输出到控制台。 #### **3.2 窗口处理(示例:5秒滚动窗口统计)** ```python from pyflink.common import Time from pyflink.datastream.window import TumblingProcessingTimeWindows # 按时间窗口聚合 result = ( source_data .flat_map(SplitWords()) .map(lambda word: (word, 1)) .key_by(lambda pair: pair[0]) # 按单词分组 .window(TumblingProcessingTimeWindows.of(Time.seconds(5))) .sum(1) # 对计数求和 .print() ) ``` --- ### **4. 实际应用场景** - **实时日志分析**:监控服务器日志,统计错误频率。 - **传感器数据处理**:工业设备实时温度异常检测。 - **电商用户行为分析**:页面点击流实时聚合。 --- ### **5. PyFlink的限制与优化** - **限制**: - 部分高级API(如复杂状态操作)需依赖Java/Scala实现。 - 性能略低于Java API(序列化开销)。 - **优化建议**: - 对关键逻辑使用`@udf`装饰器加速。 - 调整并行度:`env.set_parallelism(4)`。 --- ### **总结** PyFlink为Python开发者提供了便捷的流/批处理接口,适合快速实现轻量级实时任务。若需深度优化或复杂功能(如自定义窗口、状态管理),建议结合Java/Scala API使用。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值