zoukankan      html  css  js  c++  java
  • Hadoop 2.6.0编译on mac

    花了一个晚上的时间弄了下hadoop的编译环境,碰到些错误,这里保存下。

    需要编译Hadoop,不但需要安装Maven,还需要安装protobuf

    安装Maven

    • 下载:apache-maven-3.0.5-bin.tar.gz
    • 解压:tar -zxvf apache-maven-3.0.5-bin.tar.gz
    • 设置环境变量,打开/etc/profile文件,添加
      • export MAVEN_HOME=/opt/apache-maven-3.0.5
      • export PATH=$PATH:$MAVEN_HOME/bin
    • 执行命令使之生效:source /etc/profile或者./etc/profile
    • 验证:mvn -v 
    安装protobuf
    • 解压:tar -zxvf protobuf-2.5.0.tar.gz 
    • 进入安装目录,进行配置,执行命令,./configure
    • 安装命令:make & make check & make install
    • 验证:protoc --version

    编译Hadoop

    • 配置MAVEN国内镜像配置,在${MAVEN_HOME}/conf/settings.xml内设置。
    1 <mirror>
    2     <id>CN</id>
    3     <name>OSChina Central</name>                                                                                                 
    4     <url>http://maven.oschina.net/content/groups/public/</url>
    5     <mirrorOf>central</mirrorOf>
    6 </mirror>
    • 将Hadoop Project 导入到Eclipse
     1  
     2 
     3 Importing projects to eclipse
     4 
     5 When you import the project to eclipse, install hadoop-maven-plugins at first.
     6 
     7   $ cd hadoop-maven-plugins
     8 
     9   $ mvn install
    10 
    11 Then, generate eclipse project files.
    12 
    13   $ mvn eclipse:eclipse -DskipTests
    14 
    15 At last, import to eclipse by specifying the root directory of the project via
    16 
    17 [File] > [Import] > [Existing Projects into Workspace].
    • 出现问问题:
    Exception in thread "main" java.lang.AssertionError: Missing tools.jar at: /Library/Java/JavaVirtualMachines/jdk1.7.0_60.jdk/Contents/Home/Classes/classes.jar. Expression: file.exists()
        at org.codehaus.groovy.runtime.InvokerHelper.assertFailed(InvokerHelper.java:395)
        at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.assertFailed(ScriptBytecodeAdapter.java:683)
        at org.codehaus.mojo.jspc.CompilationMojoSupport.findToolsJar(CompilationMojoSupport.groovy:371)
        at org.codehaus.mojo.jspc.CompilationMojoSupport.this$4$findToolsJar(CompilationMojoSupport.groovy)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:86)
        at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:230)
        at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:912)
        at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnCurrentN(ScriptBytecodeAdapter.java:78)
        at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnCurrent0(ScriptBytecodeAdapter.java:112)
        at org.codehaus.mojo.jspc.CompilationMojoSupport.execute(CompilationMojoSupport.groovy:318)
        at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:132)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
        at org.apache.maven.lifecycle.internal.MojoExecutor.executeForkedExecutions(MojoExecutor.java:364)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:198)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
        at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
        at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:120)
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:355)
        at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:155)
        at org.apache.maven.cli.MavenCli.execute(MavenCli.java:584)
        at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:216)
        at org.apache.maven.cli.MavenCli.main(MavenCli.java:160)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
        at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
        at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)

    解决方法:http://www.tuicool.com/articles/7N7BruB

    this is as the compiler needs a file named tools.jar but localted at classes.jar under dir Classes but found nothing.so u can do workaround:

    cd `java_home`/
    mkdir Classes
    cd Classes
    ln -s ../lib/tools.jar classes.jar

    but u should know,in macbook,the command 'ln' is ONLY effect when u locate in the target dir,otherwise u will see:

    cd `java_home`
    mkdir Classes
    ln -s lib/tools.jar Classes/classes.jar
    # or:ln -s lib/tools.jar /absolute/path/to/Classes/classes.jar
    cp Classes/classes.jar /tmp
    Error:no such file or dir found
  • 相关阅读:
    面试题目
    MyEclipse 启动 tomcat时错误处理
    js 剪贴板操作
    PHP面试题
    MySQL 数据库 source 导入乱码
    php 不用通过表单也能创建HTTPpost请求
    一个css中zindex的用法
    最新黑链代码expression:隐藏链接代码
    测试网站访问速度的几个小方法
    优秀开源外贸网店程序一览
  • 原文地址:https://www.cnblogs.com/rcfeng/p/4535586.html
Copyright © 2011-2022 走看看