草庐IT

windows - 在 Windows 上运行 Apache Hadoop 2.1.0

coder 2023-11-09 原文

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

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

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,但没有更简单的方法吗?难道没有一些我不知道的选项可以禁用 native 代码并使 tarball 在 Windows 上可用吗?

谢谢。

已更新。确实是的。 “Homebrew”包包含一些额外的文件,最重要的是 winutils.exe 和 hadoop.dll。有了这个文件,namenode 和 datanode 就成功启动了。我认为这个问题可以关闭。我没有删除它,以防有人遇到同样的困难。

已更新 2. 为了构建“自制软件”包,我执行了以下操作:

  1. 获取源代码并将其解压。
  2. 仔细阅读 BUILDING.txt。
  3. 已安装的依赖项:
    3a) Windows SDK 7.1
    3b) Maven (我用的是 3.0.5) 3c) JDK (我用的是1.7.25)
    3d) ProtocolBuffer(我使用 2.5.0 - http://protobuf.googlecode.com/files/protoc-2.5.0-win32.zip )。只需将编译器(protoc.exe)放入某些 PATH 文件夹即可。
    3e) 一套UNIX命令行工具(我安装的是Cygwin)
  4. 启动了 Windows SDK 的命令行。开始|所有程序 |微软Windows SDK v7.1 | ... 命令提示符(我修改了这个快捷方式,在命令行中添加选项/release 以构建 native 代码的发布版本)。所有后续步骤都在 SDK 命令行窗口中进行)
  5. 搭建环境:

    设置 JAVA_HOME={path_to_JDK_root}

似乎 JAVA_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%  
  1. 将目录更改为源根文件夹(BUILDING.txt 警告路径长度有一些限制,因此源根应该有短名称 - 我使用 D:\hds)
  2. 运行构建过程:

    mvn package -Pdist -DskipTests

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

最佳答案

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

为 Windows 构建 Hadoop bin 分发的步骤

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

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

  3. 下载并安装 Maven 3.1.1。

  4. 下载 Protocol Buffers 2.5.0 并解压缩到一个文件夹(比如 c:\protobuf)。

  5. 添加环境变量 JAVA_HOME、M2_HOME 和平台(如果尚未添加)。 注意:变量名称 Platform 区分大小写。对于在 64 位或 32 位系统上构建,值将是 x64 或 Win32。 编辑 Path Variable 添加 Cygwin 的 bin 目录(如 C:\cygwin64\bin)、Maven 的 bin 目录(如 C:\maven\bin)和 Protocol Buffers 安装路径(如 c:\protobuf)

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

  7. 选择开始 --> 所有程序 --> Microsoft Windows SDK v7.1 并打开 Windows SDK 7.1 命令提示符。将目录更改为 Hadoop 源代码文件夹 (c:\hdfs)。使用选项 -Pdist,native-win -DskipTests -Dtar 执行 mvn package 以创建 Windows 二进制 tar 分发。

  8. 如果上一步一切顺利,那么 native 分发 hadoop-2.2.0.tar.gz 将在 C:\hdfs\hadoop-dist\target\hadoop-2.2.0 目录中创建。

安装 Hadoop

  1. 将 hadoop-2.2.0.tar.gz 解压到一个文件夹(比如 c:\hadoop)。

  2. 添加环境变量 HADOOP_HOME 并编辑 Path 变量以添加 HADOOP_HOME 的 bin 目录(例如 C:\hadoop\bin)。

配置 Hadoop

C:\hadoop\etc\hadoop\core-site.xml

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

C:\hadoop\etc\hadoop\hdfs-site.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-site.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

只是第一次,需要格式化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

引用:Build, Install, Configure and Run Apache Hadoop 2.2.0 in Microsoft Windows OS

关于windows - 在 Windows 上运行 Apache Hadoop 2.1.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18630019/

有关windows - 在 Windows 上运行 Apache Hadoop 2.1.0的更多相关文章

  1. ruby - 如何从 ruby​​ 中的字符串运行任意对象方法? - 2

    总的来说,我对ruby​​还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用

  2. ruby - 在 Ruby 程序执行时阻止 Windows 7 PC 进入休眠状态 - 2

    我需要在客户计算机上运行Ruby应用程序。通常需要几天才能完成(复制大备份文件)。问题是如果启用sleep,它会中断应用程序。否则,计算机将持续运行数周,直到我下次访问为止。有什么方法可以防止执行期间休眠并让Windows在执行后休眠吗?欢迎任何疯狂的想法;-) 最佳答案 Here建议使用SetThreadExecutionStateWinAPI函数,使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入休眠状态或关闭显示。像这样的东西:require'Win32API'ES_AWAYMODE_REQUIRED=0x0

  3. ruby - 如何每月在 Heroku 运行一次 Scheduler 插件? - 2

    在选择我想要运行操作的频率时,唯一的选项是“每天”、“每小时”和“每10分钟”。谢谢!我想为我的Rails3.1应用程序运行调度程序。 最佳答案 这不是一个优雅的解决方案,但您可以安排它每天运行,并在实际开始工作之前检查日期是否为当月的第一天。 关于ruby-如何每月在Heroku运行一次Scheduler插件?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/8692687/

  4. ruby-on-rails - 如何在 ruby​​ 中使用两个参数异步运行 exe? - 2

    exe应该在我打开页面时运行。异步进程需要运行。有什么方法可以在ruby​​中使用两个参数异步运行exe吗?我已经尝试过ruby​​命令-system()、exec()但它正在等待过程完成。我需要用参数启动exe,无需等待进程完成是否有任何ruby​​gems会支持我的问题? 最佳答案 您可以使用Process.spawn和Process.wait2:pid=Process.spawn'your.exe','--option'#Later...pid,status=Process.wait2pid您的程序将作为解释器的子进程执行。除

  5. ruby - 无法运行 Rails 2.x 应用程序 - 2

    我尝试运行2.x应用程序。我使用rvm并为此应用程序设置其他版本的ruby​​:$rvmuseree-1.8.7-head我尝试运行服务器,然后出现很多错误:$script/serverNOTE:Gem.source_indexisdeprecated,useSpecification.Itwillberemovedonorafter2011-11-01.Gem.source_indexcalledfrom/Users/serg/rails_projects_terminal/work_proj/spohelp/config/../vendor/rails/railties/lib/r

  6. ruby - Sinatra:运行 rspec 测试时记录噪音 - 2

    Sinatra新手;我正在运行一些rspec测试,但在日志中收到了一堆不需要的噪音。如何消除日志中过多的噪音?我仔细检查了环境是否设置为:test,这意味着记录器级别应设置为WARN而不是DEBUG。spec_helper:require"./app"require"sinatra"require"rspec"require"rack/test"require"database_cleaner"require"factory_girl"set:environment,:testFactoryGirl.definition_file_paths=%w{./factories./test/

  7. ruby-on-rails - 无法让 rspec、spork 和调试器正常运行 - 2

    GivenIamadumbprogrammerandIamusingrspecandIamusingsporkandIwanttodebug...mmm...let'ssaaay,aspecforPhone.那么,我应该把“require'ruby-debug'”行放在哪里,以便在phone_spec.rb的特定点停止处理?(我所要求的只是一个大而粗的箭头,即使是一个有挑战性的程序员也能看到:-3)我已经尝试了很多位置,除非我没有正确测试它们,否则会发生一些奇怪的事情:在spec_helper.rb中的以下位置:require'rubygems'require'spork'

  8. ruby - 在 Windows 机器上使用 Ruby 进行开发是否会适得其反? - 2

    这似乎非常适得其反,因为太多的gem会在window上破裂。我一直在处理很多mysql和ruby​​-mysqlgem问题(gem本身发生段错误,一个名为UnixSocket的类显然在Windows机器上不能正常工作,等等)。我只是在浪费时间吗?我应该转向不同的脚本语言吗? 最佳答案 我在Windows上使用Ruby的经验很少,但是当我开始使用Ruby时,我是在Windows上,我的总体印象是它不是Windows原生系统。因此,在主要使用Windows多年之后,开始使用Ruby促使我切换回原来的系统Unix,这次是Linux。Rub

  9. ruby-on-rails - before_filter 运行多个方法 - 2

    是否有可能:before_filter:authenticate_user!||:authenticate_admin! 最佳答案 before_filter:do_authenticationdefdo_authenticationauthenticate_user!||authenticate_admin!end 关于ruby-on-rails-before_filter运行多个方法,我们在StackOverflow上找到一个类似的问题: https://

  10. Vscode+Cmake配置并运行opencv环境(Windows和Ubuntu大同小异) - 2

    之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vsstudio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vscode下配置CV之法。其实极为简单,图比较多所以很长。如果你看此文还配不好,你应该思考一下是不是自己的问题。闲话少说,直接开始。0.CMkae简介有的人到大二了都不知道cmake是什么,我不说是谁。CMake是一个开源免费并且跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。它能够根据当前所在平台输出对应的m

随机推荐