当前位置: 首页 > 知识库问答 >
问题:

在Windows上运行Apache Hadoop 2.1.0

郜杰
2023-03-14

我是Hadoop新手,在Windows 7机器上运行Hadoop时遇到了问题。我对运行Hadoop 2.1.0特别感兴趣,因为它的发行说明提到支持在Windows上运行。我知道我可以试着跑1。使用Cygwin的Windows上的x版本,甚至使用准备好的VM,例如Cloudera,但由于某些原因,这些选项对我来说不太方便。

检查了来自http://apache-mirror.rbc.ru/pub/apache/hadoop/common/hadoop-2.1.0-beta/我发现确实有一些*。可以在没有Cygwin的情况下运行的cmd脚本。当我格式化HDFS分区时,一切都很好,但当我尝试运行HDFS namenode守护程序时,我遇到了两个错误:第一个,非致命的错误是winutils。找不到exe(下载的tarball中确实不存在)。我在Apache Hadoop源代码树中找到了该组件的源代码,并使用Microsoft SDK和MSbuild对其进行了编译。由于有了详细的错误消息,可以清楚地知道将可执行文件放在何处以满足Hadoop的要求。但第二个致命错误没有包含足够的信息,我无法解决:

13/09/05 10:20:09 FATAL namenode.NameNode: Exception in namenode join
java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z
    at org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Native Method)
    at org.apache.hadoop.io.nativeio.NativeIO$Windows.access(NativeIO.java:423)
    at org.apache.hadoop.fs.FileUtil.canWrite(FileUtil.java:952)
    at org.apache.hadoop.hdfs.server.common.Storage$StorageDirectory.analyzeStorage(Storage.java:451)
    at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverStorageDirs(FSImage.java:282)
    at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:200)
...
13/09/05 10:20:09 INFO util.ExitUtil: Exiting with status 1

看起来应该编译其他内容。我将尝试使用Maven从源代码构建Hadoop,但有没有更简单的方法?难道没有什么选项可以禁用本机代码并使tarball在Windows上可用吗?

谢谢你。

已更新。是的,的确如此。“Homebrew”包包含一些额外的文件,最重要的是winutils。exe和hadoop。dll。使用此文件,namenode和datanode成功启动。我想这个问题可以结束了。我没有删除它,以防有人面临同样的困难。

已更新2。为了构建“自制”软件包,我做了以下工作:

>

  • 得到消息来源,并将其拆开。
  • 仔细阅读building. txt。
  • 安装的依赖项:
    3a)WindowsSDK7.1
    3b)Maven(我用的是3.0.5)3c)JDK(我用的是1.7.25)
    3d)ProccolBuffer(我用的是2.5.0-http://protobuf.googlecode.com/files/protoc-2.5.0-win32.zip)。只要把编译器(protoc.exe)放到一些PATH文件夹中就足够了。
    3e)一套UNIX命令行工具(我安装了Cygwin)
  • 启动了WindowsSDK的命令行。开始|所有程序|Microsoft WindowsSDKv7.1|...命令提示符(我修改了这个快捷方式,在命令行中添加了选项 /release来构建本机代码的发布版本)。接下来的所有步骤都是在SDK命令行窗口内进行的)
  • 设置环境:

    设置JAVA\u HOME={path\u to\u JDK\u root}

    看来JAVA\u HOME不能包含空格!

    set PATH={path_to_maven_bin};%PATH%  
    set Platform=x64  
    set PATH={path_to_cygwin_bin};%PATH%  
    set PATH={path_to_protoc.exe};%PATH%  
    

    >

    MVN包-Pdist-DskipTest

    您可以尝试不使用“skipTest”,但在我的机器上,一些测试失败并终止了构建。它可能与BUILDING. txt中提到的符号链接问题有关。8.在hadoop-dist\Target\hadoop-2.1.0-beta中选择结果(windows可执行文件和dlls在“bin”文件夹中)

  • 共有3个答案

    郦兴德
    2023-03-14

    我也有同样的问题,但最近的hadoop版本是2.2.0。以下是我解决该问题的步骤:

    >

  • 我从源代码构建了winutils.exe。项目目录:

    hadoop-2.2.0-src\hadoop common project\hadoop common\src\main\winutils

    我的操作系统:Windows 7。构建工具:MS Visual Studio Express 2013 for Windows Desktop(它是免费的,可以从http://www.microsoft.com/visualstudio/加载)。打开工作室,文件-

    接下来,我们需要构建hadoop。dll。一些woodoo魔法:打开

    hadoop-2.2.0-src\hadoop common project\hadoop common\src\main\native\native。sln

    在MS VS中;右键单击解决方案-

    https://github.com/jerishsd/hadoop-experiments/tree/master/sources

    (不要问我git上的这个项目是干什么的!我不知道-google通过搜索头文件名指出了这一点)我复制了

    hadoop-2.2.0-src\hadoop-Common-project\hadoop-Common\Target\winutils\Debug\libwinutils.lib

    (步骤#1的结果)进入

    hadoop-2.2.0-src\hadoop common project\hadoop common\target\bin

    最后,构建操作产生了hadoop.dll!将其再次放入hadoop的bin并愉快地运行namenode!

    希望我的脚步能帮助别人。

  • 须峰
    2023-03-14

    Han准备了Hadoop 2.2 Windows x64二进制文件(见他的博客)并将它们上传到Github。

    在将两个二进制文件winutils.exehadoop.dll放入%hadoop_prefix%\bin文件夹后,我得到了相同的未满足LinkError

    问题是hadoop的一些依赖性。缺少dll。我使用Dependency Walker检查二进制文件的依赖关系,并且Microsoft Visual C 2010可再发行文件丢失。

    因此,除了自己构建所有组件之外,问题的答案是

    • 确保对Java和本机代码使用相同的体系结构。java-version告诉您是使用32还是x64。
    • 然后使用Dependency Walker确保所有本机二进制文件都是纯的并且具有相同的架构。有时缺少x64依赖项,Windows回到x86,这不起作用。请参阅另一个问题的答案。
    • 还要检查是否满足本机二进制文件的所有依赖项。
    上官斌
    2023-03-14

    我按照以下步骤安装了Hadoop 2.2.0

    为Windows构建Hadoop bin分发的步骤

    >

  • 下载并安装Microsoft Windows SDK v7.1。

    下载并安装Unix命令行工具Cygwin。

    下载并安装Maven 3.1.1。

    下载Protocol Buffers 2.5.0并解压缩到一个文件夹中(例如c:\原型buf)。

    如果尚未添加,则添加环境变量JAVA_HOME、M2_HOME和Platform。注意:变量名称Platform区分大小写。并且值将是x64或Win32,用于在64位或32位系统上构建。编辑路径变量以添加Cygwin的bin目录(例如C:\cygwin64\bin)、Maven的bin目录(例如C:\maven\bin)和协议缓冲区的安装路径(例如c:\probuf)。

    下载hadoop-2.2.0-src。焦油gz和解压缩到具有短路径(例如c:\hdfs)的文件夹,以避免Windows中由于最大路径长度限制而导致的运行时问题。

    选择开始--

    如果上一步一切顺利,那么本机发行版hadoop-2.2.0。焦油gz将在C:\hdfs\hadoop dist\target\hadoop-2.2.0目录中创建。

    安装Hadoop

    >

  • 提取hadoop-2.2.0.tar.gz到一个文件夹(说c:\hadoop)。

    添加环境变量HADOOP_HOME并编辑路径变量以添加HADOOP_HOME的bin目录(如C:\hadoop\bin)。

    配置Hadoop

    C: \hadoop\etc\hadoop\core站点。xml

    <configuration>
            <property>
                    <name>fs.defaultFS</name>
                    <value>hdfs://localhost:9000</value>
            </property>
    </configuration>
    

    C: \hadoop\etc\hadoop\hdfs站点。xml

    <configuration>
            <property>
                    <name>dfs.replication</name>
                    <value>1</value>
            </property>
            <property>
                    <name>dfs.namenode.name.dir</name>
                    <value>file:/hadoop/data/dfs/namenode</value>
            </property>
            <property>
                    <name>dfs.datanode.data.dir</name>
                    <value>file:/hadoop/data/dfs/datanode</value>
            </property>
    </configuration>
    

    C: \hadoop\etc\hadoop\mapred站点。xml

    <configuration>
            <property>
               <name>mapreduce.framework.name</name>
               <value>yarn</value>
            </property>
    </configuration>
    

    C:\hadoop\etc\hadoop\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>
    </configuration>
    

    设置名称节点格式

    这只是第一次,namenode需要格式化。

    C:\Users\abhijitg>cd c:\hadoop\bin 
    c:\hadoop\bin>hdfs namenode –format
    

    启动HDFS(Namenode和Datanode)

    C:\Users\abhijitg>cd c:\hadoop\sbin
    c:\hadoop\sbin>start-dfs
    

    启动MapReduce aka YARN(资源管理器和节点管理器)

    C:\Users\abhijitg>cd c:\hadoop\sbin
    c:\hadoop\sbin>start-yarn
    starting yarn daemons
    

    将自动打开总共四个单独的命令提示符窗口,以运行Namenode、Datanode、Resource Manager、Node Manager

    参考:在Microsoft Windows操作系统中构建、安装、配置和运行Apache Hadoop 2.2.0

  •  类似资料:
    • 问题内容: 运行Airflow的常规说明不适用于Windows环境: Airflow实用程序在命令行中不可用,我在其他地方找不到要手动添加的实用程序。Airflow如何在Windows上运行? 问题答案: 您可以在Windows中激活,并直接按照本教程进行操作。我能够按照上面的步骤启动并成功运行。 安装完成后,请进行编辑以将所有配置指向Windows系统中的某个位置,而不是lxss(ubuntu)

    • 问题内容: 我环顾了一阵子,我很惊讶地发现Gunicorn是否在Windows上运行,没有任何信息。有谁知道是这种情况,如果是,我在哪里可以找到有关它的文档? 问题答案: Gunicorn用于UNIX环境,并且与Windows不兼容。另外,有关更多信息,请参阅它的文档。

    • 我已经在Windows 7 ulimate上成功安装了XAMPP。但在从XAMPP控制面板运行Apache时发现以下错误: 检测到问题!端口3306由“C:\Program Files\MySQL Server 5.1\bin\mysqld”使用-默认文件…如果没有配置的端口,MySQL将无法启动。您需要卸载/禁用/重新配置阻塞应用程序,或重新配置我的SQL和控制面板以在其他端口上侦听 请帮助解决

    • 虽然我只是在尝试安装JabRef,但我很惊讶这个看似简单的任务却给我带来了这么多麻烦。 如何定义OpenJFX在哪里?或 在哪里可以获得包含JavaFX for Java8的JDK或JRE? 最好的问候!

    • 问题内容: 如何在Windows中运行celery worker而不创建Windows Service?有什么比喻吗? 问题答案: 它的完成方式与Linux中相同。将目录更改为包含celery任务的模块并调用效果很好。