Windows下部署/配置/调试hadoop2.2

WSL2 + VSCode:从零构建Hadoop伪分布式与Spark开发环境 本文详细介绍了如何在WSL2环境下使用VSCode搭建Hadoop伪分布式与Spark开发环境。从WSL2基础配置、Hadoop伪分布式环境搭建到Spark集成与Python环境配置,提供了完整的步骤和实用技巧,帮助开发者高效构建大数据开发环境。 阅读详情


首先,说下原文出处(这位博主很厉害):http://winse.github.io/blog/2014/04/12/hadoop2-windows-startguide/

Windows作为开发屌丝必备,在windows上如何跑集群方便开发调试,以及怎么把eclipse写好的任务mapreduce提交到测试的集群(linux)上面去跑?这些都是需要解决的问题。本文主要记录在windows上hadoop集群的环境准备,以及eclipse调试功能等。

  1. windows伪分布式部署
    • cmd
    • cygwin shell
  2. windows-eclipse提交任务到linux集群
  3. 导入源码到eclipse
  4. 胡乱噗噗

部署的基本操作,以及在linux如何部署环境,请查阅linux配置hadoop2环境。

这篇文章并非按照操作的时间顺序来进行编写。而是,如果再安装第二遍的话,自己应该如何去操作来组织下文。

一、Windows伪分布式部署

尽管一直用windows,但是对windows自带的cmd命令很是不屑!想在cygwin下部署,现在想来,最终用的是windows的java!在cygwin下不就是把路径转换后再传给java执行吗!

所以,如果把cygwin环境搭建好了的话,其实已经把windows的环境也搭建好了!同样hadoop的windows环境配置好了,cygwin环境也同样配置好了。但是,在cygwin下面提交mapreduce任务会有各种"凌乱"的问题!

先说说在windows环境搭建的步骤,然后再讲cygwin下运行。

  1. 需要用到的软件环境
  2. 编译windows环境变量配置
  3. 编译hadoop-common源代码生成本地依赖库
  4. 伪分布式配置
  5. windows下运行
  6. cygwin下运行

1.1 需要用到的软件环境

  • Win7-x86
  • hadoop-2.2.0.tar.gz
  • git
  • cygwin (源码编译时需要执行sh命令)
  • visual studio 2010(如果与.net framework4有关的问题请查阅: [*] [*] [*])
  • protoc(protoc-2.5.0-win32.zip)(解压,然后把路径加入到PATH)

搭建环境之前,建议您看看wiki-Hadoop2OnWindows。最终有用的步骤都在上面了!不过在自己瞎折腾的过程中也弄了不少东西,记录下来!

1.2 编译windows环境变量配置

变量 windows
Platform Win32
ANT_HOME D:\local\usr\apache-ant-1.9.0
MAVEN_HOME D:\local\usr\apache-maven-3.0.4
JAVA_HOME D:\Java\jdk1.7.0_02
PATH C:\cygwin\bin;C:\protoc;D:\local\usr\apache-maven-3.0.4\bin;D:\local\usr\apache-ant-1.9.0/bin;D:\Java\jdk1.7.0_02\bin;%PATH%

编译时,在打开的命令行加入cygwin的路径即可。 在maven编译最后需要用到sh的shell命令,需要把c:\cygwin\bin目录加入到path环境变量。 这里先不配置hadoop的环境变量,因为我只需要用到编译后的本地库而已!!

1.3 编译源代码生成本地依赖库(dll, exe)

hadoop2.2.0操作本地文件针对平台的进行了处理。也就是只要在windows运行集群,不管怎么样,你都得先把winutils.exe、hadoop.dll编译出来,用来处理对本地文件赋权、软链接等(类似Linux-Shell的功能)。否则会看到下面的错误:

  • 命令执行出错,少了winutils.exe

    
       
    1. 14/04/14 20:07:58 ERROR util.Shell: Failed to locate the winutils binary in the hadoop binary path
    2. java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.
    3. at org.apache.hadoop.util.Shell.getQualifiedBinPath(Shell.java:278)
    4. at org.apache.hadoop.util.Shell.getWinUtilsPath(Shell.java:300)
    5. at org.apache.hadoop.util.Shell.<clinit>(Shell.java:293)
    6.  
    7. 14/04/17 21:22:32 INFO service.AbstractService: Service org.apache.hadoop.yarn.server.nodemanager.LocalDirsHandlerServic
    8. e failed in state INITED; cause: java.lang.NullPointerException
    9. java.lang.NullPointerException
    10. at java.lang.ProcessBuilder.start(ProcessBuilder.java:1010)
    11. at org.apache.hadoop.util.Shell.runCommand(Shell.java:404)
    12. at org.apache.hadoop.util.Shell.run(Shell.java:379)
    13. at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:589)
    14. at org.apache.hadoop.util.Shell.execCommand(Shell.java:678)
    15. at org.apache.hadoop.util.Shell.execCommand(Shell.java:661)
    16. at org.apache.hadoop.fs.RawLocalFileSystem.setPermission(RawLocalFileSystem.java:639)
    17. at org.apache.hadoop.fs.RawLocalFileSystem.mkdirs(RawLocalFileSystem.java:435)
  • 少了hadoop.dll的本地库文件

    
       
    1. 14/04/17 21:30:27 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-ja
    2. va classes where applicable
    3. 14/04/17 21:30:29 FATAL datanode.DataNode: Exception in secureMain
    4. java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z
    5. at org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Native Method)
    6. at org.apache.hadoop.io.nativeio.NativeIO$Windows.access(NativeIO.java:435)
    7. at org.apache.hadoop.fs.FileUtil.canRead(FileUtil.java:977)
    8. at org.apache.hadoop.util.DiskChecker.checkAccessByFileMethods(DiskChecker.java:177)
    9. at org.apache.hadoop.util.DiskChecker.checkDirAccess(DiskChecker.java:164)
    10. at org.apache.hadoop.util.DiskChecker.checkDir(DiskChecker.java:147)
    11. at org.apache.hadoop.hdfs.server.datanode.DataNode$DataNodeDiskChecker.checkDir(DataNode.java:1698)
下载源码进行编译

下面需要用到visual studio修改项目配置信息(或者直接修改sln文件也行),然后再使用maven进行编译。

这里仅编译hadoop-common项目,最后把生成winutils.exe/hadoop.dll放到hadoop程序bin目录下。

第一步 下载源码


 
  1. /* https://github.com/apache/hadoop-common.git */
  2.  
  3. Administrator@WINSELIU /e/git/hadoop-common (master)
  4. $ git checkout branch-2.2.0
  5. Checking out files: 100% (5536/5536), done.
  6. Branch branch-2.2.0 set up to track remote branch branch-2.2.0 from origin.
  7. Switched to a new branch 'branch-2.2.0'

第二步 应用补丁patch-native-win32

jira: https://issues.apache.org/jira/browse/HADOOP-9922 
patch: https://issues.apache.org/jira/secure/attachment/12600760/HADOOP-9922.patch

native.sln-patch有点问题下面通过vs修改,使用Visual Studio修改native的活动平台

第三步 在Visual Studio 命令提示(2010)命令行进行Maven编译(仅需编译hadoop-common)


 
  1. E:\git\hadoop-common\hadoop-common-project\hadoop-common>mvn package -Pdist,native-win -DskipTests -Dtar -Dmaven.javadoc.skip=true
  2.  
  3. /* native files */
  4.  
  5. Administrator@winseliu /cygdrive/e/git/hadoop-common/hadoop-common-project/hadoop-common
  6. $ ls -1 target/bin/
  7. hadoop.dll
  8. hadoop.exp
  9. hadoop.lib
  10. hadoop.pdb
  11. libwinutils.lib
  12. winutils.exe
  13. winutils.pdb
  14.  
  15. Administrator@winseliu /cygdrive/e/git/hadoop-common/hadoop-common-project/hadoop-common
  16. $ cp target/bin/* ~/hadoop/bin/

windows的本地库的路径就是PATH环境变量。所以windows下最好还是把dll放到bin目录下,同时把HADOOP_HOME/bin加入到环境变量中!! 修改PATH环境变量。

可以把dll放到自定义的位置,但是同样最好把该路径加入到PATH环境变量。java默认会到PATH路径下找动态链接库dll。

1.4 修改hadoop配置,部署伪分布式环境

可以直接把linux伪分布式的配置cp过来用。然后修改namenode/datanode/yarn文件的存储路径就可以了。 这里有个坑,hdfs-default.xml中的路径前面都加了file://前缀!所以hdfs配置中涉及到路径的,这里都得进行了修改。

Notepad++的Ctrl+D是一个好功能啊

属性 值
slaves  
localhost  
core-site.xml  
fs.defaultFS hdfs://localhost:9000
io.file.buffer.size 10240
hadoop.tmp.dir file:///e:/tmp/hadoop
hdfs-site.xml  
dfs.replication 1
dfs.namenode.secondary.http-address localhost:9001 #设置为空可以禁用
dfs.namenode.name.dir ${hadoop.tmp.dir}/dfs/name
dfs.datanode.data.dir ${hadoop.tmp.dir}/dfs/data
dfs.namenode.checkpoint.dir ${hadoop.tmp.dir}/dfs/namesecondary
dfs.namenode.shared.edits.dir ${hadoop.tmp.dir}/dfs/shared/edits
mapred-site.xml  
mapreduce.framework.name yarn
mapreduce.jobhistory.address localhost:10020
mapreduce.jobhistory.webapp.address localhost:19888
yarn-site.xml  
yarn.nodemanager.aux-services mapreduce_shuffle
yarn.nodemanager.aux-services.mapreduce_shuffle.class org.apache.hadoop.mapred.ShuffleHandler
yarn.resourcemanager.address localhost:8032
yarn.resourcemanager.scheduler.address localhost:8030
yarn.resourcemanager.resource-tracker.address localhost:8031
yarn.resourcemanager.admin.address localhost:8033
yarn.resourcemanager.webapp.address localhost:8088
yarn.application.classpath %HADOOP_CONF_DIR%, %HADOOP_COMMON_HOME%/share/hadoop/common/, %HADOOP_COMMON_HOME%/share/hadoop/common/lib/, %HADOOP_HDFS_HOME%/share/hadoop/hdfs/, %HADOOP_HDFS_HOME%/share/hadoop/hdfs/lib/, %HADOOP_YARN_HOME%/share/hadoop/yarn/, %HADOOP_YARN_HOME%/share/hadoop/yarn/lib/

注意点:

  • yarn.application.classpath必须定义!尽管程序中有判断不同平台的默认值不同,但是在yarn-default.xml中已经有值了!
    • yarn.application.classpath对启动程序没影响,但是在运行mapreduce时影响巨大破坏力极强!
  • 自定library的路径是个坑!!
    • 在windows下,执行java程序java.library.path默认到PATH路径找。这也是需要定义环境变量HADOOP_HOME,以及把bin加入到PATH的原因吧!

1.5 Windows直接运行cmd启动

如果是用windows的cmd的话,到这里已经基本ok了!格式化namenode(hadoop namenode -format),启动就ok了! 发现自己其实很傻×,固执的要用cygwin启动运行!用windows的cmd启动,然后用cygwin的终端查看数据不就行了!两不耽误!

cmd命令默认是去bin目录下找hadoop.dll的,同时hadoop命令会把bin加入到java.library.path路径下。可以直接把hadoop.dll放到bin路径(强烈推荐)。 设置环境变量,启动文件系统:


 
  1. /* **设置环境变量** */
  2. HADOOP_HOME=E:\local\libs\big\hadoop-2.2.0
  3. PATH=%HADOOP_HOME%\bin;%PATH%
  4.  
  5. /* 格式化namenode */
  6. hadoop namenode -format
  7.  
  8. /* 操作HDFS */
  9. set HADOOP_ROOT_LOGGER=DEBUG,console
  10.  
  11. E:\local\libs\big\hadoop-2.2.0>sbin\start-dfs.cmd
  12.  
  13. E:\local\libs\big\hadoop-2.2.0>hdfs dfs -put README.txt / # 很弱,fs简化操作都不兼容!
  14.  
  15. E:\local\libs\big\hadoop-2.2.0>hdfs dfs -ls /
  16. Found 1 items
  17. -rw-r--r-- 1 Administrator supergroup 1366 2014-04-22 22:20 /README.txt

JAVA_HOME的路径中最好不要有空格!

instead e.g. c:\Progra~1\Java... instead of c:\Program Files\Java....

好处也是明显的,直接是windows执行,可以使用jdk自带的工具查看运行情况。

?疑问: log日志都写在hadoop.log文件中了?反正我是没看到hadoop.log的文件!

HDFS操作文件OK,如果按照上面步骤或者官网的wiki操作,则运行mapreduce也是不会出问题的!!


 
  1. E:\local\libs\big\hadoop-2.2.0>sbin\start-yarn.cmd
  2.  
  3. E:\local\libs\big\hadoop-2.2.0>hadoop org.apache.hadoop.examples.WordCount /README.txt /out
  4.  
  5. E:\local\libs\big\hadoop-2.2.0>hdfs dfs -ls /out
  6. Found 2 items
  7. -rw-r--r-- 1 Administrator supergroup 0 2014-04-22 22:22 /out/_SUCCESS
  8. -rw-r--r-- 1 Administrator supergroup 1306 2014-04-22 22:22 /out/part-r-00000

如果你使用上面的hadoop命令执行不了命令,请把hadoop.cmd的换行(下载下来后是unix的)转成windows的换行!

问题原因分析

如果你运行mapreduce失败,不外乎三种情况:没有定义HADOOP_HOME系统环境变量,hadoop.dll没有放在PATH路径下,以及yarn.application.classpath没有设置。这三个问题导致。如果你不幸碰到了,那我们如何来确认问题呢?

下面一步步的来解读这个处理过程。在运行mapreduce时报错,可以使用远程调试方式来确认发生的具体位置。(如果你还没有弄好本地开发环境,请先看[三、导入源码到eclipse])

第一步 调试NodeManager,从根源下手

由于windows的hadoop的程序都是直接运行的,不像linux还要ssh再登陆然后在启动。所以这里直接设置HADOOP_NODEMANAGER_OPTS就可以了。


 
  1. set HADOOP_NODEMANAGER_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8092"
  2.  
  3. E:\local\libs\big\hadoop-2.2.0\sbin\start-yarn.cmd
  4. starting yarn daemons
  5.  
  6. E:\>hadoop org.apache.hadoop.examples.WordCount /in /out

运行任务之前,在ContainerLaunch#call#171行打个断点(可以查看执行的java命令脚本内容,#254writeLaunchEnv写入cmd文件)。同时可以去到nm-local-dir/nmPrivate目录下查看任务的本地临时文件。application_XXX/containter_XXX/launch_container.cmd文件是MRAppMaster/YarnChild/YarnChild的启动脚本。

  • 调试。备份生成的脚本文件,开启死循环拷贝模式,把缓存留下来慢慢看

    
       
    1. while true ; do cp -rf nm-local-dir/ backup/ ; sleep 0.5; done

  • 查看缓存文件

    • 真正启动Mapreduce(yarnchild)的脚本文件launch_container.cmd
    • 查看系统日志,确定错误

    • classpath路径

    • Job任务类型。第三个参数!

这里可以查看脚本,确认HADOOP的相关目录是否正确!以及查看classpath的MANIFEST.MF查看依赖的jar是否完整!也可以通过任务的名称了解相关信息。

  • 路径问题,不影响大局(可以不关注/不修改)

  • 调试map/reduce

调试程序mapreduce比较好办了,毕竟代码都是自己写的好弄。可以使用mrunit。

map和reduce的进程都是动态的,既不能通过命令行的OPTS参数指定。如果要调试map/reduce需要在opts中传递给它们。


 
  1. hadoop org.apache.hadoop.examples.WordCount "-Dmapreduce.map.java.opts=-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=8090" /in /out
  • library问题

如果因为library的问题报access$0的错,提交任务都不成功,可以把自定义的dll路径加入java.library.path尝试一下。


 
  1. hadoop org.apache.hadoop.examples.WordCount "-Dmapreduce.map.java.opts= -Djava.library.path=E:\local\libs\big\hadoop-2.2.0\lib\native" "-Dmapreduce.reduce.java.opts=-Djava.library.path=E:\local\libs\big\hadoop-2.2.0\lib\native" /in /out

1.6 cygwin下运行

要在cygwin下面把hadoop弄起来,你要把cygwin与java的路径区分,理清楚路径,配置工作就成功一半咯!既然用的还是windows的java程序。配置文件也是最终提供给java执行的,所以配置都不需要修改。

要在cygwin中运行hadoop,仅仅搞定脚本就ok了!在执行java命令之前,把cygwin的路径转换为windows。

  • 修改了hadoop-env.sh的内容:

 
  1. export JAVA_HOME=/cygdrive/d/Java/jdk1.7.0_02 #本来已经在环境变量中定义了,但是执行后台批处理的时刻不会调用环境变量的配置!
  2. export HADOOP_HEAPSIZE=512
  3. export HADOOP_PID_DIR=${HADOOP_PID_DIR:-${HADOOP_LOG_DIR}}

cygwin也就是linux的默认加载native的路径是libs/native!!拷一份过去把!!或者配置JAVA_LIBRARY_PATH,参见下面的修改Shell脚本部分。

cygwin自带的工具有个优势:运行脚本和java命令都不出现乱码。(或许把SecureCRT改成GBK编码也行)

  • 修改shell脚本命令

由于java在windows和linux在识别文件路径上也有差异。如/data传给java,在windows会加上当前路径的盘符(e.g. E),那写入数据目录就为e:/data。

同时,不同操作系统的classpath的组织方式也不同。(1)需要对classpath已经文件夹的路径进行转换,才能在cygwin下正常的运行java程序。 所以,只要在执行java命令之前对路径和classpath进行转换即可。(2)还需要对getconf返回值的换行符进行处理。涉及到下列的文件:


 
  1. libexec/hadoop-config.sh
  2. bin/hadoop
  3. bin/hdfs
  4. bin/mapred
  5. bin/yarn
  6. sbin/start-dfs.sh
  7. sbin/stop-dfs.sh

重点修改两个问题如下:

  • 配置

 
  1. /* hadoop-config.sh */
  2.  
  3. # 定义时注意,处理cygwin路径时只处理了以/cygdrive开头的路径!
  4. export JAVA_LIBRARY_PATH=/cygdrive/e/local/libs/big/hadoop-2.2.0/bin

由于windows配置时,把hadoop.dll的动态链接库放到bin目录下,而linux(cygwin)的sh脚本默认是去lib/native下面,所以需要定义一下链接库的查找路径。

  • 脚本

 
  1. /* hadoop-config.sh */
  2.  
  3. /* 在调用java命令前,调用该方法 */
  4. function Cygwin_Patch_PathConvert() {
  5.  
  6. cygwin=false
  7. case "`uname`" in
  8. CYGWIN*) cygwin=true;;
  9. esac
  10.  
  11. # cygwin path translation
  12. if $cygwin; then
  13. CLASSPATH=`cygpath -p -w "$CLASSPATH"`
  14. # ssh过来执行命令是不从.bash_profile获取参数!
  15. if [ "X$HADOOP_HOME" != "X" ]; then
  16. HADOOP_HOME=`cygpath -w "$HADOOP_HOME"`
  17. fi
  18. HADOOP_LOG_DIR=`cygpath -w "$HADOOP_LOG_DIR"`
  19. if [ "X$TOOL_PATH" != "X" ]; then
  20. TOOL_PATH=`cygpath -p -w "$TOOL_PATH"`
  21. fi
  22.  
  23. HADOOP_COMMON_HOME=`cygpath -w "$HADOOP_COMMON_HOME"`
  24. JAVA_HOME=`cygpath -w "$JAVA_HOME"`
  25. HADOOP_YARN_HOME=`cygpath -w "$HADOOP_YARN_HOME"`
  26. HADOOP_HDFS_HOME=`cygpath -w "$HADOOP_HDFS_HOME"`
  27. HADOOP_CONF_DIR=`cygpath -w "$HADOOP_CONF_DIR"`
  28.  
  29. # HOME
  30.  
  31. # 把带/cygdrive/[abc]形式的路径转换为windows路径
  32. HADOOP_OPTS=`echo $HADOOP_OPTS | awk -F" " '{for(i=1;i<=NF;i++)print $i}' | awk -F"=" ' {if($2~/^\/cygdrive\/[a|b|c|d|e]/){print $1;system("cygpath -w -p " $2 )}else{ print $0 }; print ""}' | awk 'BEGIN{opt="";last=""}{if($0~/^$/){ opt=opt " "; last="" }else{ if(last!=""){ opt=opt "="} opt=opt $0; last=$0; }; }END{ print opt }' `
  33.  
  34. YARN_OPTS=`echo $YARN_OPTS | awk -F" " '{for(i=1;i<=NF;i++)print $i}' | awk -F"=" ' {if($2~/^\/cygdrive\/[a|b|c|d|e]/){print $1;system("cygpath -w -p " $2 )}else{ print $0 }; print ""}' | awk 'BEGIN{opt="";last=""}{if($0~/^$/){ opt=opt " "; last="" }else{ if(last!=""){ opt=opt "="} opt=opt $0; last=$0; }; }END{ print opt }' `
  35.  
  36. JAVA_LIBRARY_PATH=`cygpath -p -w "$JAVA_LIBRARY_PATH"`
  37.  
  38. fi
  39. }
  40.  
  41. /* 系统的换行符不同,需要转换 */
  42. SECONDARY_NAMENODES=$($HADOOP_PREFIX/bin/hdfs getconf -secondarynamenodes 2>/dev/null | sed 's/^M//g' )

在解析OPTS时执行cygpath转换的时刻,也需要加上-p的参数!OPTS中有java.library.path的环境变量!

  • HDFS文件系统测试

 
  1. bin/hadoop namenode -format
  2. sbin/start-dfs.sh
  3. ps

jps没有作用了;或者也可以通过任务管理器/ProcessExplorer查看java.exe,命令行列还可以查看具体的执行命令,对应的什么服务。

映像名称 用户名 命令行
java.exe Administrator D:\Java\jdk1.7.0_02\bin\java.exe -Dproc_namenode -Xmx512m ... org.apache.hadoop.hdfs.server.namenode.NameNode
java.exe Administrator D:\Java\jdk1.7.0_02\bin\java.exe -Dproc_datanode -Xmx512m ... org.apache.hadoop.hdfs.server.datanode.DataNode
java.exe Administrator D:\Java\jdk1.7.0_02\bin\java.exe -Dproc_secondarynamenode ... org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode

修改了hadoop的脚本,启动环境(cygwin下启动和windows启动都可以),就可以操作HDFS了。


 
  1. Administrator@winseliu ~
  2. $ hadoop/bin/hadoop fs -put job.xml /
  3. 14/04/22 23:53:31 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
  4.  
  5. Administrator@winseliu ~
  6. $ export JAVA_LIBRARY_PATH=/cygdrive/e/local/libs/big/hadoop-2.2.0/bin
  7.  
  8. Administrator@winseliu ~
  9. $ hadoop/bin/hadoop fs -ls /
  10. Found 4 items
  11. -rw-r--r-- 1 Administrator supergroup 1366 2014-04-22 22:20 /README.txt
  12. -rw-r--r-- 1 Administrator supergroup 66539 2014-04-22 23:53 /job.xml
  13. drwxr-xr-x - Administrator supergroup 0 2014-04-22 23:34 /out
  14. drwx------ - Administrator supergroup 0 2014-04-22 22:21 /tmp

如果执行权限问题,可以使用设置HADOOP_USER_NAME的方式处理:


 
  1. Administrator@winseliu ~/hadoop
  2. $ export HADOOP_USER_NAME=Administrator
  3.  
  4. Administrator@winseliu ~/hadoop
  5. $ bin/hadoop fs -rmr /out
MapReduce任务测试

 
  1. sbin/start-yarn.sh
  2. ps

yarn资源框架启动后,任务管理又会添加两个java的程序:

映像名称 用户名 命令行
java.exe Administrator D:\Java\jdk1.7.0_02\bin\java.exe -Dproc_resourcemanager ... org.apache.hadoop.yarn.server.resourcemanager.ResourceManager
java.exe Administrator D:\Java\jdk1.7.0_02\bin\java.exe -Dproc_nodemanager ... org.apache.hadoop.yarn.server.nodemanager.NodeManager
提交任务,执行任务处理

在cygwin环境下,hdfs和yarn都启动成功了,并且能传文件到HDFS中。但是由于cygwin环境最终还是使用windows的java程序集群执行任务!

(可考虑[2.2 Eclipse提交MapReduce])

  • 已处理问题一: cygwin下启动nodemanager,路径没转换

由于在cygwin下面启动,大部分的环境变量都是从cygwin带过来的!解析conf中的变量时会使用nodemanager中对应变量的值,如HADOOP_MAPRED_HOME等。

在cygwin使用start-yarn.sh调用java启动程序之前需要转换路径为windows下的路径。在上面的操作已经进行了处理。


 
  1. # 在临时目录下生成了launch_container.cmd文件,用于执行命令,而里面环境变量的值有些cygwin环境下的!
  2.  
  3. # 设置端口调试nodemanager
  4. Administrator@winseliu ~/hadoop
  5. $ grep "8092" etc/hadoop/*
  6. etc/hadoop/yarn-env.sh:export YARN_NODEMANAGER_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8092"
  7.  
  8. ## windows下这个方法大有文章,会把客户端传递的CLASSPATH写入jar的MANIFEST.MF中!
  9. org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.sanitizeEnv()
  • 已处理问题二:执行mapreduce任务时,缺少环境变量(使用Process Explorer工具查看)

 
  1. # 设置远程调试map
  2. hadoop org.apache.hadoop.examples.WordCount "-Dmapreduce.map.java.opts=-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=8090" /job.xml /out
  3.  
  4. # mapred-site.xml设置超时时间
  5. <property>
  6. <name>mapred.task.timeout</name>
  7. <value>1800000</value>
  8. </property>
  9.  
  10. # 结束任务
  11. Administrator@winseliu ~/hadoop
  12. $ bin/hadoop job -kill job_1398407971082_0003
  • 取不到HADOOP_HOME环境变量,查找winutils.exe时报错!
    • 在hadoop-env.sh中增加定义HADOOP_HOME!
  • library路径问题,解析动态链接库hadoop.dll失败!
    • 增加-D参数吧!

 
  1. hadoop org.apache.hadoop.examples.WordCount "-Dmapreduce.map.java.opts= -Djava.library.path=E:\local\libs\big\hadoop-2.2.0\bin" "-Dmapreduce.reduce.java.opts=-Djava.library.path=E:\local\libs\big\hadoop-2.2.0\bin" /job.xml /out

windows泽腾啊。

  • 问题二:直接提交任务到linux集群,环境变量不匹配

 
  1. Administrator@winseliu ~/hadoop
  2. $ bin/hadoop fs -ls hdfs://192.168.1.104:9000/
  3.  
  4. Administrator@winseliu ~/hadoop
  5. $ export HADOOP_USER_NAME=hadoop
  6.  
  7. Administrator@winseliu ~/hadoop
  8. $ bin/hadoop org.apache.hadoop.examples.WordCount -fs hdfs://192.168.1.104:9000 -jt 192.168.1.104 /in /out

由于本地是windows的java执行任务提交到集群,所以使用了%JAVA_HOME%,以及windows下的CLASSPATH!执行任务时,同时把nodemanager节点的临时目录备份下来再慢慢查看:


 
  1. [hadoop@slave temp]$ while true ; do cp -rf nm-local-dir/ backup/ ; sleep 0.1; done
  2. [hadoop@slave temp]$ find . -name "*.sh"

修复该问题,可以参考[2.2 Eclipse提交MapReduce]。

参考


二、Windows下使用eclipse连接linux集群

2.1 java代码操作HDFS


 
  1. public class HelloHdfs {
  2.  
  3. public static boolean FINISH_CLEAN = true;
  4.  
  5. public static void main(String[] args) throws IOException {
  6. System.setProperty("HADOOP_USER_NAME", "hadoop"); // 设置用户,否则会有读取权限的问题
  7.  
  8. FileSystem fs = FileSystem.get(new Configuration());
  9.  
  10. fs.mkdirs(new Path("/java/folder"));
  11. OutputStream os = fs.create(new Path("/java/folder/hello.txt"));
  12. Writer w = new BufferedWriter(new OutputStreamWriter(os, "UTF-8"));
  13. w.write("hello hadoop!");
  14. w.flush();
  15. w.close();
  16. os.close();
  17.  
  18. FSDataInputStream is = fs.open(new Path("/java/folder/hello.txt"));
  19. BufferedReader br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
  20. System.out.println(br.readLine());
  21. br.close();
  22. is.close();
  23.  
  24. // IOUtils.copyBytes(in, out, 4096, true);
  25.  
  26. if (FINISH_CLEAN)
  27. fs.delete(new Path("/java"), true);
  28. }
  29.  
  30. }

对于访问linux集群的hdfs,只要编译通过,对集群HDFS文件系统的CRUD基本没有不会遇到什么问题。写代码过程中遇到过下面两个问题:

  • 如果你也引入了hive的包,可能会抛不能重写final方法的错误!由于hive中也就了proto的代码(final),调整下顺序先加载proto的包就可以了!

    
       
    1. log4j:WARN Please initialize the log4j system properly.
    2. Exception in thread "main" java.lang.VerifyError: class org.apache.hadoop.security.proto.SecurityProtos$CancelDelegationTokenRequestProto overrides final method getUnknownFields.()Lcom/google/protobuf/UnknownFieldSet;
    3. at java.lang.ClassLoader.defineClass1(Native Method)
    4. at java.lang.ClassLoader.defineClass(ClassLoader.java:791)
  • Permission denied: user=Administrator, access=WRITE, inode="/":hadoop:supergroup:drwxr-xr-x 这个问题的处理方式有很多。

    • hadoop fs -chmod 777 /
    • 在hdfs的配置文件中,将dfs.permissions修改为False
    • System.setProperty("user.name", "hduser")/System.setProperty("HADOOP_USER_NAME", "hduser")/configuration.set("hadoop.job.ugi", "hduser");

2.2 Eclipse提交MapReduce

  • 需要设置HADOOP_HOME/hadoop.home.dir的环境变量,即在该目录下面有bin\winutils.exe的文件。否则会报错:

    
       
    1. 14/04/14 20:07:57 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
    2. 14/04/14 20:07:58 ERROR util.Shell: Failed to locate the winutils binary in the hadoop binary path
    3. java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.
    4. at org.apache.hadoop.util.Shell.getQualifiedBinPath(Shell.java:278)
    5. at org.apache.hadoop.util.Shell.getWinUtilsPath(Shell.java:300)
    6. at org.apache.hadoop.util.Shell.<clinit>(Shell.java:293)
  • 任务端(map/reduce)执行命令的classpath变量在客户端Client拼装的!

    浏览官网的jira,然后下载并应用MRApps.patch和YARNRunner.patch两个补丁。

    其实就是修改Apps#addToEnvironment(Map<String, String>, String, String)来拼装特定操作系统的classpath。以及JAVA_HOME等一些环境变量的值($JAVA_HOMEor %JAVA_HOME%)

    使用patch -p1 < PATCH进行修复。如果patch文件不在项目根路径,可以删除补丁内容前面文件夹路径,直接与源文件放一起然后应用patch就行了。当然你根据修改的内容手动修改也是OK的。

如果仅仅是作为客户端client提交任务时使用。如仅在eclipse中运行main提交任务,那么就没有必要打包!直接放到需要项目源码中即可。


 
  1. * 把应用了补丁的YARNRunner和MRApps加入到项目中
  2. * 然后再configuration中加入`config.set("mapred.remote.os", "Linux")`
  3. * 把mapreduce的任务打包为jar,然后`job.setJar("helloyarn.jar")`
  4. * 最后`Run As -> Java Application`运行提交

如果很多项目使用,可以打包出来,然后把它添加到classpath中,同时添加加入自定义的xml配置。


 
  1. lib-ext>jar tvf window-client-mapreduce-patch.jar
  2. 25 Wed Apr 16 11:21:26 CST 2014 META-INF/MANIFEST.MF
  3. 26684 Wed Apr 16 10:10:16 CST 2014 org/apache/hadoop/mapred/YARNRunner.class
  4. 24397 Tue Apr 15 10:32:28 CST 2014 org/apache/hadoop/mapred/YARNRunner.java
  5. 1406 Wed Apr 16 10:10:16 CST 2014 org/apache/hadoop/mapreduce/v2/util/MRApps$1.class
  6. 2450 Wed Apr 16 10:10:16 CST 2014 org/apache/hadoop/mapreduce/v2/util/MRApps$TaskAttemptStateUI.class
  7. 19887 Wed Apr 16 10:10:16 CST 2014 org/apache/hadoop/mapreduce/v2/util/MRApps.class
  8. 18879 Tue Apr 15 11:42:42 CST 2014 org/apache/hadoop/mapreduce/v2/util/MRApps.java

参考:


三、导入源码到eclipse

环境

参考前面的【window伪分布式部署】

打开Visual Studio的命令行工具


 
  1. 启动\所有程序\Microsoft Visual Studio 2010\Visual Studio Tools\Visual Studio 命令提示(2010)

获取源码,检查2.2.0的分支


 
  1. git clone git@github.com:apache/hadoop-common.git
  2. git checkout branch-2.2.0

也可以下载src的源码包,但是如果想修改点东西的话,clone源码应该是最佳的选择了。

编译生成打包


 
  1. set PATH=c:\cygwin\bin;%PATH%
  2. mvn package -Pdist,native-win -DskipTests -Dmaven.javadoc.skip=true

最好加上skipTests条件,不然编译等待时间不是一般的长!!

导入eclipse


 
  1. mvn eclipse:eclipse

然后使用eclipse导入已经存在的工程(existing projects into workspace),导入后存在两个问题:

  1. stream工程的conf源码包找不到。修改为在.project文件中引用,然后把conf引用加入到.classpath。
  2. common下的test代码报错。把target/generated-test-sources/java文件夹的也作为源码包即可。

eclipse的maven插件你得安装了(要用到M2_REPO路径),同时引用正确conf\settings.xml的Maven配置路径。

注意: 不要使用eclipse导入已经存在的maven方式!eclipse的m2e有些属性和插件还不支持,导入后会报很多错!而使用mvn eclipse:eclipse的方式是把依赖的jar加入到.classpath。

参考


四、胡乱噗噗

查看Debug日志


 
  1. [hadoop@umcc97-44 ~]$ export HADOOP_ROOT_LOGGER=DEBUG,console
  2. [hadoop@umcc97-44 ~]$ hadoop fs -ls /

java加载动态链接库的环境变量java.library.path


 
  1. D:\local\cygwin\Administrator\test>java LoadLib
  2.  
  3. D:\local\cygwin\Administrator\test>java -Djava.library.path=. LoadLib
  4. Exception in thread "main" java.lang.UnsatisfiedLinkError: no hadoop in java.library.path
  5. at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1860)
  6. at java.lang.Runtime.loadLibrary0(Runtime.java:845)
  7. at java.lang.System.loadLibrary(System.java:1084)
  8. at LoadLib.main(LoadLib.java:3)
  9.  
  10. D:\local\cygwin\Administrator\test>java -Djava.library.path=".;%PATH%" LoadLib

没有定义的时刻,会去PATH路径下找。一旦定义了java.library.path只会在给定的路径下查找!

hadoop的本地native-library的位置

文件具体放什么位置,随便运行一个命令,通过debug的日志就可以看到默认Library的路径。


 
  1. Administrator@winseliu ~/hadoop
  2. $ export HADOOP_ROOT_LOGGER=DEBUG,console
  3.  
  4. Administrator@winseliu ~/hadoop
  5. $ bin/hadoop fs -ls /
  6.  
  7. 14/04/18 09:48:39 DEBUG util.NativeCodeLoader: java.library.path=E:\local\libs\big\hadoop-2.2.0\lib\native
  8. 14/04/18 09:48:39 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

cygwin下运行java程序,路径问题


 
  1. Administrator@winseliu ~/test
  2. $ ls
  3. ENV.class ENV.java w3m-0.5.2
  4.  
  5. Administrator@winseliu ~/test
  6. $ java ENV
  7. Windows 7
  8.  
  9. Administrator@winseliu ~/test
  10. $ jar cvf test.jar *.class
  11. 已添加清单
  12. 正在添加: ENV.class(输入 = 475) (输出 = 307)(压缩了 35%)
  13.  
  14. Administrator@winseliu ~/test
  15. $ ls -l
  16. 总用量 18
  17. -rwxr-xr-x 1 Administrator None 475 四月 4 15:00 ENV.class
  18. -rw-r--r-- 1 Administrator None 117 四月 4 15:00 ENV.java
  19. -rwxr-xr-x 1 Administrator None 758 四月 19 12:03 test.jar
  20. drwxr-xr-x+ 1 Administrator None 0 四月 12 20:31 w3m-0.5.2
  21.  
  22. Administrator@winseliu ~/test
  23. $ java -cp test.jar ENV
  24. Windows 7
  25.  
  26. Administrator@winseliu ~/test
  27. $ java -cp /home/Administrator/test/test.jar ENV
  28. 错误: 找不到或无法加载主类 ENV
  29.  
  30. Administrator@winseliu ~/test
  31. $ set -x
  32.  
  33. Administrator@winseliu ~/test
  34. $ java -cp `cygpath -w /home/Administrator/test/test.jar` ENV
  35. ++ cygpath -w /home/Administrator/test/test.jar
  36. + java -cp 'D:\local\cygwin\Administrator\test\test.jar' ENV
  37. Windows 7

[cygwin]ssh单独用户权限问题


 
  1. Administrator@winseliu ~
  2. $ hadoop/bin/hadoop fs -put .bash_profile /bash.info
  3. put: Permission denied: user=Administrator, access=WRITE, inode="/":cyg_server:supergroup:drwxr-xr-x
  • 设置环境变量HADOOP_USER_NAME=hadoop
  • 可以使用dfs.permissions属性设置为false。
  • 给位置chown/chmod赋权: hadoop fs -chmod 777 /
  • 也可以使用ssh-host-config的Should privilege separation be used? (yes/no) no设置为no。使用当前用户进行管理。 Administrator@winseliu /var $ chown Administrator:None empty/ Administrator@winseliu ~ $ /usr/sbin/sshd.exe # 启动,也可以弄个脚本到启动项,开机启动 Administrator@winseliu ~/hadoop $ ps | grep ssh 4384 1 4384 4384 ? 500 02:41:21 /usr/sbin/sshd

Visual Studio处理winutils工程

  • winutils的32位编译 .net framework4, vs2010, 属性修改设置 http://stackoverflow.com/questions/12267158/failure-during-conversion-to-coff-file-invalid-or-corrupt http://stackoverflow.com/questions/10888391/error-link-fatal-error-lnk1123-failure-during-conversion-to-coff-file-inval http://social.msdn.microsoft.com/Forums/vstudio/en-US/eb4a7699-0f3c-4701-9790-199787f1b359/vs-2010-error-lnk1123-failure-during-conversion-to-coff-file-invalid-or-corrupt?forum=vcgeneral

    http://hi.baidu.com/dreamthief/item/aa690d1494e2caca38cb306d

    在cygwin安装的时刻也看过这篇,用64位环境maven的是可以编译的 http://www.srccodes.com/p/article/38/build-install-configure-run-apache-hadoop-2.2.0-microsoft-windows-os

    http://stackoverflow.com/questions/18630019/running-apache-hadoop-2-1-0-on-windows

[cygwin]ipv6的问题,改成ipv4后不能登陆!

可能是新版本的openssh的bug!!!


 
  1. Administrator@winseliu /cygdrive/h/documents
  2. $ ssh -o AddressFamily=inet localhost -v
  3. OpenSSH_6.5, OpenSSL 1.0.1g 7 Apr 2014
  4. debug1: Reading configuration data /etc/ssh_config
  5. debug1: Connecting to localhost [127.0.0.1] port 22.
  6. debug1: Connection established.
  7. debug1: identity file /home/Administrator/.ssh/id_rsa type 1
  8. debug1: identity file /home/Administrator/.ssh/id_rsa-cert type -1
  9. debug1: identity file /home/Administrator/.ssh/id_dsa type -1
  10. debug1: identity file /home/Administrator/.ssh/id_dsa-cert type -1
  11. debug1: identity file /home/Administrator/.ssh/id_ecdsa type -1
  12. debug1: identity file /home/Administrator/.ssh/id_ecdsa-cert type -1
  13. debug1: identity file /home/Administrator/.ssh/id_ed25519 type -1
  14. debug1: identity file /home/Administrator/.ssh/id_ed25519-cert type -1
  15. debug1: Enabling compatibility mode for protocol 2.0
  16. debug1: Local version string SSH-2.0-OpenSSH_6.5
  17. ssh_exchange_identification: read: Connection reset by peer
  18.  
  19. Administrator@winseliu ~
  20. $ ping localhost
  21.  
  22. 正在 Ping winseliu [::1] 具有 32 字节的数据:
  23. 来自 ::1 的回复: 时间<1ms
  24. 来自 ::1 的回复: 时间<1ms

还不能再hosts文件中加!如,指定localhost为127.0.0.1后,得到结果为:


 
  1. Administrator@winseliu ~/hadoop
  2. $ ssh localhost
  3. ssh_exchange_identification: read: Connection reset by peer

文章修改历史:

Hadoop 3.2.2 Windows 单机部署:5个核心配置文件详解与DataNode启动报错修复 本文详细介绍了Hadoop 3.2.2在Windows环境下的单机部署步骤,包括5个核心配置文件的详解与DataNode启动报错的修复方法。从环境准备、目录结构规划到配置文件深度解析,提供了完整的部署指南和故障排查技巧,帮助用户快速搭建Hadoop开发环境。 阅读详情

相关推荐

Windows环境下的Dinky1.2.4本地源码部署

摘要: 本文详细介绍了在Windows系统下部署Dinky的完整解决方案。针对Dinky官网缺乏Windows部署指南的问题,通过源码分析提出了系统适配方案。部署流程包括:修改application.yml端口配置、调整多个pom.xml依赖(解决包冲突与版本问题)、删除flink-yarn中冲突类文件、配置Windows环境变量(Hadoop、Flink等客户端路径)。重点解决了YARN模式下因路径分隔符差异导致的ClassNotFoundException问题。同时提供了Dinky集群配置规范,包括Fl

f4vinny的专栏 1054

解决org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z

解决org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z

Turn X7 2716

Windows 上 Hadoop 报错?winutils 2.6.0-3.0.0 全版本部署与避坑指南

在 Windows 环境下运行 Hadoop 时,常因缺少原生二进制文件而报错,winutils 和 hadoop.dll 是解决文件系统权限与用户组映射的关键组件。其原理是通过 JNI 桥接 POSIX 语义,确保本地文件操作正常。正确部署可避免 Could not locate executable null\bin\winutils.exe 等常见错误,提升本地开发调试效率。适用于 Java 大数据开发、教学实验等场景。本文详细解析 winutils 2.6.0 至 3.0.0 的版本对应、部署步骤及

weixin_30985047的博客 259

org.apache.hadoop.io.nativeio.NativeIO$Windows.access0问题的解决

需在java项目中重新创建一个包,将NativeIO.java进行重写。NativeIO.java代码如下。修改之后,重新运行项目即可.

m0_53400772的博客 3018

Windows下Hadoop报错winutils缺失?从配置到避坑的完整方案

在Windows上进行大数据开发时,Hadoop生态组件往往依赖Linux原生接口,而winutils.exe正是弥补这一缺失的关键桥梁。当运行Spark、Hive或Hadoop客户端时,若找不到winutils.exe或版本不匹配,便会抛出令人头疼的运行时异常。理解其背后的原理,掌握环境变量配置与版本匹配技巧,是本地开发顺畅进行的基础。本文从Hadoop在Windows下的运行机制出发,结合2.6.0-3.0.0版本的兼容性实践,系统梳理了winutils的下载、解压、环境配置与验证流程,并针对权限问题、

weixin_33046983的博客 281

Hadoop 2.9.2 Windows环境配置工具包(WinUtils实战版)

Hadoop 2.9.2是Apache Hadoop在稳定性和功能完善性方面的重要里程碑版本,广泛应用于企业级大数据平台构建。其核心架构由HDFS和YARN两大组件构成,采用主从(Master-Slave)模式实现分布式存储与计算资源管理。graph TDA[Client] -->|读写请求| B(NameNode)F[ApplicationMaster] -->|资源申请| G(ResourceManager)NameNode负责元数据管理,DataNode执行实际数据块存储;

weixin_35949153的博客 999

org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z的解决办法

Exception in thread "main" java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z 注:该问题在mapreduce中可能遇到,本人就是这样的。 今天在学习MapReduce的时候,写好三个类之后 开始运行,结果爆出这个问题 Exception in threa...

qq_46634851的博客 4358

Hadoop-2.9.2在Windows环境下的完整运行配置与资源部署

Apache Hadoop-2.9.2是Hadoop生态系统中广为采用的稳定版本,其核心由三大模块构成:和MapReduce。HDFS负责海量数据的高容错存储,采用主从架构(NameNode + DataNode),支持多副本机制;YARN实现集群资源的统一调度与管理,将资源控制与作业调度解耦;MapReduce则提供基于批处理的分布式计算模型,适用于大规模数据集的离线分析。-- 典型Hadoop组件依赖关系示意 -->是指向 Hadoop 安装根目录的环境变量,通常包含bin。

weixin_42298778的博客 375

Hadoop 3.2.2 + JDK 21 Windows 开发环境搭建:从零到运行首个MapReduce作业

本文详细介绍了在Windows系统上搭建Hadoop 3.2.2与JDK 21开发环境的完整流程,包括环境配置、核心文件修改、服务启动及首个MapReduce作业的实现。通过实战指南,帮助开发者快速掌握大数据开发基础,提升本地开发效率。

weixin_30855099的博客 402

Hadoop 2.7.0 Windows环境配置与实战指南

用于定义MapReduce任务的运行模式和调度器行为。

weixin_36483050的博客 929

Hadoop 2.9.0 Windows环境配置工具包(含winutils)

Hadoop 2.9.0标志着从单一计算模型向通用资源平台的转型,其核心在于解耦存储与计算。相较于1.x版本中JobTracker承担资源调度与作业管理双重职责所导致的瓶颈,2.x引入YARN实现了计算框架无关化。该架构下,HDFS专注于海量数据的高可靠性存储,采用主从式结构,NameNode维护文件系统命名空间,DataNode负责实际数据块(默认128MB)的读写与复制;

weixin_42602368的博客 1186

Windows 10 原生部署 Hadoop 3.0.0 实操指南

Hadoop 是一个开源分布式计算框架,核心包含 HDFS 分布式文件系统和 YARN 资源调度器,广泛用于大数据存储与批处理。其运行依赖 Java 运行时、POSIX 兼容层及标准化路径管理。在 Windows 环境下,由于缺乏原生 Unix 工具链支持,需通过 winutils.exe 和 hadoop.dll 补齐文件权限、用户映射等关键能力;同时必须适配 OpenJDK 11+、禁用 IPv6、规避空格路径等 Windows 特有约束。该方案不依赖 WSL 或虚拟机,适用于教学实验、本地调试与轻量开

weixin_30694389的博客 301

Hadoop 2.6.0 Windows版完整部署包(含hadoop.dll与winutils.exe)

Hadoop作为一个开源的分布式计算框架,广泛应用于大数据处理领域。然而,其原生支持主要集中在Linux系统上,而Windows平台由于缺乏对POSIX接口的原生支持,在运行Hadoop时面临诸多挑战。为解决这一问题,社区提供了适配Windows系统的Hadoop发行包——其中hadoop-2.6.0 Windows版本成为早期开发者在本地进行开发与测试的重要选择。该版本通过引入和hadoop.dll。

weixin_42596246的博客 857

Windows原生安装Hive 3.1.3实战:从零搭建到避坑指南

数据仓库开发中,Hive作为SQL-on-Hadoop的核心工具,通常被部署在Linux环境。但其实在Windows上原生安装Hive并非不可行,关键要理解其依赖原理:Hive的metastore需要独立数据库(如MySQL)存储元数据,任务执行则依赖Hadoop客户端。掌握JDK8、Hadoop 3.3.6与Hive 3.1.3的版本搭配,合理配置HDFS与MySQL连接,就能在本地搭建一套可用的单机环境。对于想要快速验证HQL逻辑、学习Hive执行流程或进行源码调试的开发者,Windows原生方案省去虚

weixin_29061425的博客 219

hbase客户端连接工具winutils-2.2.0.zip

该资源为java客户端连接hbase集群,在windows客户端配置hadoop环境所需要用到的工具类,有需自取

Hadoop 之 winutils

在windows上运行Hadoop相关程序时报错问题解决(比如Spark) 如果需要积分或者校验码,可以去百度网盘中下载,地址如下: 链接:https://pan.baidu.com/s/1RVpmbtjuQL3lbAEYfjr2EA 提取码:1234

windows下eclipse+hadoop远程调试配置,遇到的几种问题及解决方法

eclipse远程调试hadoop需要的文件如下: 1.ANT(http://ant.apache.org/bindownload.cgi) 2.hadoop2x-eclipse-plugin-master(https://github.com/winghc/hadoop2x-eclipse-plugin) 3.hadoop2.x.x部署包(https://hadoop.apache...

qq_32244413的博客 372

使用Linux安装yum报错 E: Unable to correct problems, you have held broken packages.

使用Linux安装yum报错 E: Unable to correct problems, you have held broken packages.

weixin_43205954的博客 2462

windows7下eclipse远程调试linux hadoop,实战 windows7 下 eclipse 远程调试 linux hadoop

恩,之所以有这篇博客,是因为最近又有童鞋咨询怎么在 windows 7 下用eclipse远程调试部署在linux下的hadoop,其实我自己不这么混搭的,既然有童鞋这么问了,那我就索性随着折腾一把了。首先说明几点:远程调试对于本地hadoop版本、远程hadoop版本、eclipse版本都有极为严格的兼容性要求,我所采用的版本如下:(1)本地hadoop:0.20.203(如果客户端和服务端ha...

weixin_30237677的博客 320

Unity URP项目里Post Processing死活没效果?别慌,这5个坑我帮你踩过了

本文详细解析了Unity URP项目中Post Processing效果失效的五大常见问题,包括渲染管线配置冲突、Volume作用域误判、摄像机参数漏配、Layer层级冲突和Profile引用异常。通过实际项目案例和代码示例,提供专业级解决方案,帮助开发者快速排查并修复后处理效果不生效的问题。

weixin_33721427的博客 333

别再死记硬背了!用Wireshark抓包实战,5分钟搞懂GRE、L2TP、IPsec的区别

本文通过Wireshark抓包实战,详细解析GRE、L2TP和IPsec三大隧道协议的核心差异与应用场景。从报文结构到配置示例,帮助网络工程师快速掌握这些协议的本质,提升VPN部署与故障排查能力。特别适合准备HCIP认证的工程师深化理解。

weixin_30352645的博客 439
上一篇: linux下常用指令(centos6、hadoop2.2和一些其他的technique)
下一篇: JAVA文档注释小结
ucasliming
博客等级 码龄16年 126粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值