导航:首页 > 源码编译 > hadoop为什么重新编译

hadoop为什么重新编译

发布时间:2022-10-25 08:16:23

㈠ 如何在CentOS6.5下编译64位的Hadoop2.x

hadoop2.x在apache官网直接下载的并没有64位直接能用的版本,如果我们想在64位系统使用,那么就需要重新编译hadoop,否则直接使用32位的hadoop运行在64位的系统上,将会出现一些库不兼容的异常。如下图所示,最直接的一个异常:在这之前,先用一个表格来描述下散仙的编译的环境的状况:

序号 描述 备注

1 centos6.5系统64位 linux环境

2 Apache Ant1.9 ant编译

3 Apache Maven3.2.1 maven打包部署

4 gcc,gcc-c++,make 依赖库

5 protobuf-2.5.0 序列化库

6 JDK1.7 java 环境

7 Hadoop2.2.0源码包 官网下载

8 屌丝工程师一名 主角

9 hadoop交流群376932160 技术交流


下面进入正题,散仙的环境是在centos下,所以大部分安装编译依赖库,都可以很方便的使用yum命令来完成。

1,安装gcc,执行如下的几个yum命令即可

Java代码

  • ./configure

  • make

  • makecheck

  • makeinstall

  • [java]view plain

  • <spanstyle="font-family:Arial;font-size:12px;">./configure

  • make

  • makecheck

  • makeinstall</span>


  • 然后,执行如下命令,进行测试安装成功与否

  • [[email protected]]#protoc

  • Missinginputfile.

  • [[email protected]]#

  • [java]view plain

  • <spanstyle="font-family:Arial;font-size:12px;">[[email protected]]#protoc

  • Missinginputfile.

  • [[email protected]]#</span>



  • 6,从hadoop官网下载hadoop2.2.0的版本的源码的src的包,并查看目录

  • [root@ganglia~]#cdhadoop-2.2.0-src

  • [[email protected]]#ll

  • 总用量108

  • -rw-r--r--.167974users996810月72013BUILDING.txt

  • drwxr-xr-x.267974users409610月72013dev-support

  • drwxr-xr-x.467974users40966月917:05hadoop-assemblies

  • drwxr-xr-x.367974users40966月917:27hadoop-client

  • drwxr-xr-x.967974users40966月917:14hadoop-common-project

  • drwxr-xr-x.367974users40966月917:26hadoop-dist

  • drwxr-xr-x.767974users40966月917:20hadoop-hdfs-project

  • drwxr-xr-x.1167974users40966月917:25hadoop-maprece-project

  • drwxr-xr-x.467974users40966月917:06hadoop-maven-plugins

  • drwxr-xr-x.367974users40966月917:27hadoop-minicluster

  • drwxr-xr-x.467974users40966月917:03hadoop-project

  • drwxr-xr-x.367974users40966月917:05hadoop-project-dist

  • drwxr-xr-x.1267974users40966月917:26hadoop-tools

  • drwxr-xr-x.467974users40966月917:24hadoop-yarn-project

  • -rw-r--r--.167974users1516410月72013LICENSE.txt

  • -rw-r--r--.167974users10110月72013NOTICE.txt

  • -rw-r--r--.167974users1656910月72013pom.xml

  • -rw-r--r--.167974users136610月72013README.txt

  • [[email protected]]#

  • [java]view plain

  • <spanstyle="font-family:Arial;font-size:12px;">[root@ganglia~]#cdhadoop-2.2.0-src

  • [[email protected]]#ll

  • 总用量108

  • -rw-r--r--.167974users996810月72013BUILDING.txt

  • drwxr-xr-x.267974users409610月72013dev-support

  • drwxr-xr-x.467974users40966月917:05hadoop-assemblies

  • drwxr-xr-x.367974users40966月917:27hadoop-client

  • drwxr-xr-x.967974users40966月917:14hadoop-common-project

  • drwxr-xr-x.367974users40966月917:26hadoop-dist

  • drwxr-xr-x.767974users40966月917:20hadoop-hdfs-project

  • drwxr-xr-x.1167974users40966月917:25hadoop-maprece-project

  • drwxr-xr-x.467974users40966月917:06hadoop-maven-plugins

  • drwxr-xr-x.367974users40966月917:27hadoop-minicluster

  • drwxr-xr-x.467974users40966月917:03hadoop-project

  • drwxr-xr-x.367974users40966月917:05hadoop-project-dist

  • drwxr-xr-x.1267974users40966月917:26hadoop-tools

  • drwxr-xr-x.467974users40966月917:24hadoop-yarn-project

  • -rw-r--r--.167974users1516410月72013LICENSE.txt

  • -rw-r--r--.167974users10110月72013NOTICE.txt

  • -rw-r--r--.167974users1656910月72013pom.xml

  • -rw-r--r--.167974users136610月72013README.txt

  • [[email protected]]#</span>



  • 7,修改/root/hadoop-2.2.0-src/hadoop-common-project/hadoop-auth/pom.xml文件,增加,补丁内容,这部分是hadoop2.2.0的bug,如果是其他的2.x的版本,可以视情况而定,内容如下:

  • <dependency>

  • <groupId>org.mockito</groupId>

  • <artifactId>mockito-all</artifactId>

  • <scope>test</scope>

  • </dependency>

  • <!--新增的内容开始-->

  • <dependency>

  • <groupId>org.mortbay.jetty</groupId>

  • <artifactId>jetty-util</artifactId>

  • <scope>test</scope>

  • </dependency>

  • <!--新增的内容结束-->

  • <dependency>

  • <groupId>org.mortbay.jetty</groupId>

  • <artifactId>jetty</artifactId>

  • <scope>test</scope>

  • </dependency>

  • [xml]view plain

  • <spanstyle="font-family:Arial;font-size:12px;"><dependency>

  • <groupId>org.mockito</groupId>

  • <artifactId>mockito-all</artifactId>

  • <scope>test</scope>

  • </dependency>

  • <!--新增的内容开始-->

  • <dependency>

  • <groupId>org.mortbay.jetty</groupId>

  • <artifactId>jetty-util</artifactId>

  • <scope>test</scope>

  • </dependency>

  • <!--新增的内容结束-->

  • <dependency>

  • <groupId>org.mortbay.jetty</groupId>

  • <artifactId>jetty</artifactId>

  • <scope>test</scope>

  • </dependency></span>



  • 8,修改完毕后,回到hadoop-2.2.0-src的跟目录下执行编译打包命令:

  • mvnclean

  • mvnpackage-Pdist,native-DskipTests-Dtar

  • [java]view plain

  • <spanstyle="font-family:Arial;font-size:12px;">mvnclean

  • mvnpackage-Pdist,native-DskipTests-Dtar

  • </span>


  • 然后等待半个小时左右的编译时间,网速快的话,时间可能会更短,编译完成后,输出的打包信息如下:

  • [INFO]

  • [INFO]---maven-resources-plugin:2.2:resources(default-resources)@hadoop-minicluster---

  • [INFO].

  • [INFO]

  • [INFO]---maven-compiler-plugin:2.5.1:compile(default-compile)@hadoop-minicluster---

  • [INFO]Nosourcestocompile

  • [INFO]

  • [INFO]---maven-resources-plugin:2.2:testResources(default-testResources)@hadoop-minicluster---

  • [INFO].

  • [INFO]

  • [INFO]---maven-compiler-plugin:2.5.1:testCompile(default-

  • ㈡ 大数据初学者需要看看哪些Hadoop问题及解决方案

    相信大家在学习大数据hadoop的时候肯定会遇到各种各样的问题,这篇文章就是介绍一些常的问题及如何解决的办法。
    1、namenode无法启动,不报错
    可能原因是:之前用root启动过,导致current文件夹的权限和所属更改了,需要更改回来
    解决:current文件夹位于hadoop安装目录同级目录的tmp/dfs/namesecondary
    2、WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platfo
    原因:查看本地文件:
    [root@db96 hadoop]# file /usr/local/hadoop/lib/native/libhadoop.so.1.0.0
    /usr/local/hadoop/lib/native/libhadoop.so.1.0.0: ELF 32-bit LSB shared object,
    Intel 80386, version 1 (SYSV), dynamically linked, not stripped
    是32位的hadoop,安装在了64位的linux系统上。lib包编译环境不一样,所以不能使用。
    解决:重新编译hadoop.就是重新编译hadoop软件。
    3、Hadoop 报错be replicated to 0 nodes, instead of 1
    原因(1)namespaceid不相同(2)没有足够的硬盘
    解决(1)停止datanode(2)删除datadir下所有数据。(3)重启datanode
    4、The ratio of reported blocks 0.0000 has not reached the threshold 0.9990. Safe mode will be turned off automatically.
    原因:由日志可以看出无法删除/home/hadoop/tmp/mapred/system.(其实这只是一种假象,往往我们会去纠结于这个目录,其实不然)
    解决:
    (1):终极办法强制退出安全模式(safemode)
    hadoop dfsadmin -safemode leave
    这种方式虽然快,但会有遗留问题,我在用habse的时候就遇到过,很麻烦,然后你就用“hadoop fsck /”工具慢慢恢复吧。
    (2):删除namenode下/home/hadoop/tmp下的所有文件,重新format,当然这种方式非常暴力,因为你的数据完全木有了
    (3):参考源码可发现这个错误是在检查file的时候抛出来的,基本也就是file的block丢失、错误等原因造成的。
    这种情况在副本数为1的情况下会很棘手,其他的时候hadoop基本能自行解决,错误数很多的情况下就会一直处于safemode下,当然你关于集群修改配置文件后的分发,本人写了一个配置文件分发工具可以强制离开安全模式,先保证正常读写,然后再启用“hadoop fsck /”工具慢慢修复。
    5、Access denied for user 'root'@'hadoop1master' (using password: YES)
    原因:没有除本地用户的其他用户远程连接
    解决:修改mysql表,将localhost修改为%
    6、运行本地的wordcount报错
    该错误是缺少hadoop.dll(hadoop2.6.0编译的版本)文件,需要将hadoop.dll拷贝到hadoop2.6.0/bin目录下。
    再次运行没有报错。
    7、运行api的时候报了权限问题,使用的是hadoop,而我们想使用root
    原因:配置环境变量中设置了HADOOP_USER_NAME=hadoop或者在run configuration中设置的-DHADOOP_USER_NAME=hadoop
    解决:将配置环境变量中设置成HADOOP_USER_NAME=root或者在run configuration中设置的-DHADOOP_USER_NAME=root
    8、org.apache.hadoop.dfs.SafeModeException:Name node is in safe mode安全模式
    解决方法:bin/hadoop dfsadmin -safemode leave也就是关闭Hadoop的安全模式,这样问题就解决了。
    9、用java -jar执行hadoop的job报错
    原因:用hadoop的maprece变成,在执行的时候需要依赖hadoop的大部分依赖,所以上述错误是缺少hadoop的依赖包
    解决:(1)建议使用hadoop -jar 执行job(2)如果使用java -jar,需要使用java -cp 把hadoop依赖的所有jar拼接到路径里面去(3)如果使用java -jar,另一种是在打包的时候把hadoop依赖的jar一起打包进去
    10、运行mr程序报UnsatisfiedLinkError:nativeio.NativeIO$Windows.access0(Ljava/lang/String
    一般这个问题是由本地hadoop环境变量照成的。需要设置hadoop_home变量的值。注意hadoop安装目录下,bin目录中缺少hadoop.dll和winutils.exe等动态库。还要增加bin目录到path路径。另外编辑器需要添加hadoop环境 还要注意jdk等是否正确安装。
    11、在使用hdfs的fromlocal上传文件到hdfs时,爆出本地文件找不到异常,但是查看本地文件确实存在
    原因:windows设置了隐藏已知文件的扩展名功能,导致上传的文件没有写扩展名
    解决:在上传文件的地方添加上扩展名即可。
    12、在执行hadoop-deamon.sh start xxx时报错
    原因:启动的时候,节点名写错了
    解决:修改名字,名字有, namenode datanode等
    13、hadoop 8088 看不到maprece 任务的执行状态,无数据显示
    解决方法:
    (1)首先检查自己的集群中配置$HADOOP_HOME/conf/mapred-site.xml是否存在。
    其中的maprece.framework.name是否配置。
    (2)如果还不行的话,请在$HADOOP_HOME/conf/mapred-site.xml中原来的配置文件基础之上再添加下面

    maprece.jobhistory.addressname>
    master:10020value>
    property>

    maprece.jobhistory.webapp.addressname>
    master:19888value>
    property>
    14、security.AccessControlException: Access denied for user sunqw. Superuser privilege is required
    解决方法:
    方式一:
    在系统环境变量中增加HADOOP_USER_NAME,其值为root;
    或者 通过java程序动态添加,如下:
    ?1System.setProperty("HADOOP_USER_NAME", "root");
    方式二:
    使用Eclipse在非hadoop运行下进行写入hdfs文件系统中时,由于sunqw对"/"目录没有写入权限,所以导致异常的发生。解决方法即开放hadoop中的HDFS目录的权限,命令如下:hadoop fs -chmod 777 / 。
    方式三:
    修改hadoop的配置文件:conf/hdfs-core.xml,添加或者修改 dfs.permissions 的值为 false。
    方式四:
    将Eclipse所在机器的名称修改为root,即与服务器上运行hadoop的名称一致。

    ㈢ hadoop 重新编译,提示如下错误,怎么个意思了

    第一次编辑错误提示
    主要是增加了在maven目录下,conf/settings.xml
    <mirror>
    <id>nexus-osc</id>
    <mirrorOf>*</mirrorOf>
    <name>Nexusosc</name>
    <url>http://maven.oschina.net/content/groups/public/</url>
    </mirror>

    <profile>
    <id>jdk-1.7</id>
    <activation>
    <jdk>1.7</jdk>
    </activation>
    <repositories>
    <repository>
    <id>nexus</id>
    <name>local private nexus</name>
    <url>http://maven.oschina.net/content/groups/public/</url>
    <releases>
    <enabled>true</enabled>
    </releases>
    <snapshots>
    <enabled>false</enabled>
    </snapshots>
    </repository>
    </repositories>
    <pluginRepositories>
    <pluginRepository>
    <id>nexus</id>
    <name>local private nexus</name>
    <url>http://maven.oschina.net/content/groups/public/</url>
    <releases>
    <enabled>true</enabled>
    </releases>
    <snapshots>
    <enabled>false</enabled>
    </snapshots>
    </pluginRepository>
    </pluginRepositories>
    </profile>

    [INFO] ------------------------------------------------------------------------
    [INFO] Reactor Summary:
    [INFO]
    [INFO] Apache Hadoop Main ................................. FAILURE [06:34 min]
    [INFO] Apache Hadoop Project POM .......................... SKIPPED
    [INFO] Apache Hadoop Annotations .......................... SKIPPED
    [INFO] Apache Hadoop Assemblies ........................... SKIPPED
    [INFO] Apache Hadoop Project Dist POM ..................... SKIPPED
    [INFO] Apache Hadoop Maven Plugins ........................ SKIPPED
    [INFO] Apache Hadoop MiniKDC .............................. SKIPPED
    [INFO] Apache Hadoop Auth ................................. SKIPPED
    [INFO] Apache Hadoop Auth Examples ........................ SKIPPED
    [INFO] Apache Hadoop Common ............................... SKIPPED
    [INFO] Apache Hadoop NFS .................................. SKIPPED
    [INFO] Apache Hadoop Common Project ....................... SKIPPED
    [INFO] Apache Hadoop HDFS ................................. SKIPPED
    [INFO] Apache Hadoop HttpFS ............................... SKIPPED
    [INFO] Apache Hadoop HDFS BookKeeper Journal .............. SKIPPED
    [INFO] Apache Hadoop HDFS-NFS ............................. SKIPPED
    [INFO] Apache Hadoop HDFS Project ......................... SKIPPED
    [INFO] hadoop-yarn ........................................ SKIPPED
    [INFO] hadoop-yarn-api .................................... SKIPPED
    [INFO] hadoop-yarn-common ................................. SKIPPED
    [INFO] hadoop-yarn-server ................................. SKIPPED
    [INFO] hadoop-yarn-server-common .......................... SKIPPED
    [INFO] hadoop-yarn-server-nodemanager ..................... SKIPPED
    [INFO] hadoop-yarn-server-web-proxy ....................... SKIPPED
    [INFO] hadoop-yarn-server-applicationhistoryservice ....... SKIPPED
    [INFO] hadoop-yarn-server-resourcemanager ................. SKIPPED
    [INFO] hadoop-yarn-server-tests ........................... SKIPPED
    [INFO] hadoop-yarn-client ................................. SKIPPED
    [INFO] hadoop-yarn-applications ........................... SKIPPED
    [INFO] hadoop-yarn-applications-distributedshell .......... SKIPPED
    [INFO] hadoop-yarn-applications-unmanaged-am-launcher ..... SKIPPED
    [INFO] hadoop-yarn-site ................................... SKIPPED
    [INFO] hadoop-yarn-project ................................ SKIPPED
    [INFO] hadoop-maprece-client ............................ SKIPPED
    [INFO] hadoop-maprece-client-core ....................... SKIPPED
    [INFO] hadoop-maprece-client-common ..................... SKIPPED
    [INFO] hadoop-maprece-client-shuffle .................... SKIPPED
    [INFO] hadoop-maprece-client-app ........................ SKIPPED
    [INFO] hadoop-maprece-client-hs ......................... SKIPPED
    [INFO] hadoop-maprece-client-jobclient .................. SKIPPED
    [INFO] hadoop-maprece-client-hs-plugins ................. SKIPPED
    [INFO] Apache Hadoop MapRece Examples ................... SKIPPED
    [INFO] hadoop-maprece ................................... SKIPPED
    [INFO] Apache Hadoop MapRece Streaming .................. SKIPPED
    [INFO] Apache Hadoop Distributed Copy ..................... SKIPPED
    [INFO] Apache Hadoop Archives ............................. SKIPPED
    [INFO] Apache Hadoop Rumen ................................ SKIPPED
    [INFO] Apache Hadoop Gridmix .............................. SKIPPED
    [INFO] Apache Hadoop Data Join ............................ SKIPPED
    [INFO] Apache Hadoop Extras ............................... SKIPPED
    [INFO] Apache Hadoop Pipes ................................ SKIPPED
    [INFO] Apache Hadoop OpenStack support .................... SKIPPED
    [INFO] Apache Hadoop Client ............................... SKIPPED
    [INFO] Apache Hadoop Mini-Cluster ......................... SKIPPED
    [INFO] Apache Hadoop Scheler Load Simulator ............. SKIPPED
    [INFO] Apache Hadoop Tools Dist ........................... SKIPPED
    [INFO] Apache Hadoop Tools ................................ SKIPPED
    [INFO] Apache Hadoop Distribution ......................... SKIPPED
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD FAILURE
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 10:10 min
    [INFO] Finished at: 2015-01-12T00:52:27-08:00
    [INFO] Final Memory: 29M/70M
    [INFO] ------------------------------------------------------------------------
    [ERROR] Failed to execute goal org.apache.maven.plugins:maven-site-plugin:3.3:attach-descriptor (attach-descriptor) on project hadoop-main: Execution attach-descriptor of goal org.apache.maven.plugins:maven-site-plugin:3.3:attach-descriptor failed: Plugin org.apache.maven.plugins:maven-site-plugin:3.3 or one of its dependencies could not be resolved: Failed to collect dependencies at org.apache.maven.plugins:maven-site-plugin:jar:3.3 -> org.apache.maven.reporting:maven-reporting-exec:jar:1.1 -> org.apache.maven.shared:maven-shared-utils:jar:0.3: Failed to read artifact descriptor for org.apache.maven.shared:maven-shared-utils:jar:0.3: Could not transfer artifact org.apache.maven.shared:maven-shared-utils:pom:0.3 from/to nexus-osc (http://maven.oschina.net/content/groups/public/): Failed to transfer file:http://maven.oschina.net/content/groups/public/org/apache/maven/shared/maven-shared-utils/0.3/maven-shared-utils-0.3.pom. Return code is: 502, ReasonPhrase: Bad Gateway. -> [Help 1]
    [ERROR]
    [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
    [ERROR] Re-run Maven using the -X switch to enable full debug logging.
    [ERROR]
    [ERROR] For more information about the errors and possible solutions, please read the following articles:
    [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginResolutionException
    [hadoop@localhost hadoop-2.5.0-src]$

    ㈣ 为什么编译 hadoop 源码

    编译了hadoop,可以方便的查看某个函数的实现。如果不编译就只是自己去翻源代码了。更重要的是如果你编译了hadoop,你可以根据自己的需要改动hadoop的某些实现机制。(hadoop开源的好处)

    ㈤ 安装hadoop的步骤有哪些

    hadoop2.0已经发布了稳定版本了,增加了很多特性,比如HDFSHA、YARN等。最新的hadoop-2.4.1又增加了YARNHA

    注意:apache提供的hadoop-2.4.1的安装包是在32位操作系统编译的,因为hadoop依赖一些C++的本地库,
    所以如果在64位的操作上安装hadoop-2.4.1就需要重新在64操作系统上重新编译
    (建议第一次安装用32位的系统,我将编译好的64位的也上传到群共享里了,如果有兴趣的可以自己编译一下)

    前期准备就不详细说了,课堂上都介绍了
    1.修改Linux主机名
    2.修改IP
    3.修改主机名和IP的映射关系
    ######注意######如果你们公司是租用的服务器或是使用的云主机(如华为用主机、阿里云主机等)
    /etc/hosts里面要配置的是内网IP地址和主机名的映射关系
    4.关闭防火墙
    5.ssh免登陆
    6.安装JDK,配置环境变量等

    集群规划:
    主机名 IP 安装的软件 运行的进程
    HA181 192.168.1.181 jdk、hadoop NameNode、DFSZKFailoverController(zkfc)
    HA182 192.168.1.182 jdk、hadoop NameNode、DFSZKFailoverController(zkfc)
    HA183 192.168.1.183 jdk、hadoop ResourceManager
    HA184 192.168.1.184 jdk、hadoop ResourceManager
    HA185 192.168.1.185 jdk、hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain
    HA186 192.168.1.186 jdk、hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain
    HA187 192.168.1.187 jdk、hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain

    说明:
    1.在hadoop2.0中通常由两个NameNode组成,一个处于active状态,另一个处于standby状态。ActiveNameNode对外提供服务,而StandbyNameNode则不对外提供服务,仅同步activenamenode的状态,以便能够在它失败时快速进行切换。
    hadoop2.0官方提供了两种HDFSHA的解决方案,一种是NFS,另一种是QJM。这里我们使用简单的QJM。在该方案中,主备NameNode之间通过一组JournalNode同步元数据信息,一条数据只要成功写入多数JournalNode即认为写入成功。通常配置奇数个JournalNode
    这里还配置了一个zookeeper集群,用于ZKFC(DFSZKFailoverController)故障转移,当ActiveNameNode挂掉了,会自动切换StandbyNameNode为standby状态
    2.hadoop-2.2.0中依然存在一个问题,就是ResourceManager只有一个,存在单点故障,hadoop-2.4.1解决了这个问题,有两个ResourceManager,一个是Active,一个是Standby,状态由zookeeper进行协调
    安装步骤:
    1.安装配置zooekeeper集群(在HA185上)
    1.1解压
    tar-zxvfzookeeper-3.4.5.tar.gz-C/app/
    1.2修改配置
    cd/app/zookeeper-3.4.5/conf/
    cpzoo_sample.cfgzoo.cfg
    vimzoo.cfg
    修改:dataDir=/app/zookeeper-3.4.5/tmp
    在最后添加:
    server.1=HA185:2888:3888
    server.2=HA186:2888:3888
    server.3=HA187:2888:3888
    保存退出
    然后创建一个tmp文件夹
    mkdir/app/zookeeper-3.4.5/tmp
    再创建一个空文件
    touch/app/zookeeper-3.4.5/tmp/myid
    最后向该文件写入ID
    echo1>/app/zookeeper-3.4.5/tmp/myid
    1.3将配置好的zookeeper拷贝到其他节点(首先分别在HA186、HA187根目录下创建一个weekend目录:mkdir/weekend)
    scp-r/app/zookeeper-3.4.5/HA186:/app/
    scp-r/app/zookeeper-3.4.5/HA187:/app/

    注意:修改HA186、HA187对应/weekend/zookeeper-3.4.5/tmp/myid内容
    HA186:
    echo2>/app/zookeeper-3.4.5/tmp/myid
    HA187:
    echo3>/app/zookeeper-3.4.5/tmp/myid

    2.安装配置hadoop集群(在HA181上操作)
    2.1解压
    tar-zxvfhadoop-2.4.1.tar.gz-C/weekend/
    2.2配置HDFS(hadoop2.0所有的配置文件都在$HADOOP_HOME/etc/hadoop目录下)
    #将hadoop添加到环境变量中
    vim/etc/profile
    exportJAVA_HOME=/app/jdk1.7.0_79
    exportHADOOP_HOME=/app/hadoop-2.4.1
    exportPATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin

    #hadoop2.0的配置文件全部在$HADOOP_HOME/etc/hadoop下
    cd/home/hadoop/app/hadoop-2.4.1/etc/hadoop

    2.2.1修改hadoop-env.sh
    exportJAVA_HOME=/app/jdk1.7.0_79

    2.2.2修改core-site.xml
    <configuration>
    <!--指定hdfs的nameservice为ns1-->
    <property>
    <name>fs.defaultFS</name>
    <value>hdfs://ns1/</value>
    </property>
    <!--指定hadoop临时目录-->
    <property>
    <name>hadoop.tmp.dir</name>
    <value>/app/hadoop-2.4.1/tmp</value>
    </property>

    <!--指定zookeeper地址-->
    <property>
    <name>ha.zookeeper.quorum</name>
    <value>HA185:2181,HA186:2181,HA187:2181</value>
    </property>
    </configuration>

    2.2.3修改hdfs-site.xml
    <configuration>
    <!--指定hdfs的nameservice为ns1,需要和core-site.xml中的保持一致-->
    <property>
    <name>dfs.nameservices</name>
    <value>ns1</value>
    </property>
    <!--ns1下面有两个NameNode,分别是nn1,nn2-->
    <property>
    <name>dfs.ha.namenodes.ns1</name>
    <value>nn1,nn2</value>
    </property>
    <!--nn1的RPC通信地址-->
    <property>
    <name>dfs.namenode.rpc-address.ns1.nn1</name>
    <value>HA181:9000</value>
    </property>
    <!--nn1的http通信地址-->
    <property>
    <name>dfs.namenode.http-address.ns1.nn1</name>
    <value>HA181:50070</value>
    </property>
    <!--nn2的RPC通信地址-->
    <property>
    <name>dfs.namenode.rpc-address.ns1.nn2</name>
    <value>HA182:9000</value>
    </property>
    <!--nn2的http通信地址-->
    <property>
    <name>dfs.namenode.http-address.ns1.nn2</name>
    <value>HA182:50070</value>
    </property>
    <!--指定NameNode的元数据在JournalNode上的存放位置-->
    <property>
    <name>dfs.namenode.shared.edits.dir</name>
    <value>qjournal://HA185:8485;HA186:8485;HA187:8485/ns1</value>
    </property>
    <!--指定JournalNode在本地磁盘存放数据的位置-->
    <property>
    <name>dfs.journalnode.edits.dir</name>
    <value>/app/hadoop-2.4.1/journaldata</value>
    </property>
    <!--开启NameNode失败自动切换-->
    <property>
    <name>dfs.ha.automatic-failover.enabled</name>
    <value>true</value>
    </property>
    <!--配置失败自动切换实现方式-->
    <property>
    <name>dfs.client.failover.proxy.provider.ns1</name>
    <value>org.apache.hadoop.hdfs.server.namenode.ha.</value>
    </property>
    <!--配置隔离机制方法,多个机制用换行分割,即每个机制暂用一行-->
    <property>
    <name>dfs.ha.fencing.methods</name>
    <value>
    sshfence
    shell(/bin/true)
    </value>
    </property>
    <!--使用sshfence隔离机制时需要ssh免登陆-->
    <property>
    <name>dfs.ha.fencing.ssh.private-key-files</name>
    <value>/home/hadoop/.ssh/id_rsa</value>
    </property>
    <!--配置sshfence隔离机制超时时间-->
    <property>
    <name>dfs.ha.fencing.ssh.connect-timeout</name>
    <value>30000</value>
    </property>
    </configuration>

    2.2.4修改mapred-site.xml
    <configuration>
    <!--指定mr框架为yarn方式-->
    <property>
    <name>maprece.framework.name</name>
    <value>yarn</value>
    </property>
    </configuration>

    2.2.5修改yarn-site.xml
    <configuration>
    <!--开启RM高可用-->
    <property>
    <name>yarn.resourcemanager.ha.enabled</name>
    <value>true</value>
    </property>
    <!--指定RM的clusterid-->
    <property>
    <name>yarn.resourcemanager.cluster-id</name>
    <value>yrc</value>
    </property>
    <!--指定RM的名字-->
    <property>
    <name>yarn.resourcemanager.ha.rm-ids</name>
    <value>rm1,rm2</value>
    </property>
    <!--分别指定RM的地址-->
    <property>
    <name>yarn.resourcemanager.hostname.rm1</name>
    <value>HA183</value>
    </property>
    <property>
    <name>yarn.resourcemanager.hostname.rm2</name>
    <value>HA184</value>
    </property>
    <!--指定zk集群地址-->
    <property>
    <name>yarn.resourcemanager.zk-address</name>
    <value>HA185:2181,HA186:2181,HA187:2181</value>
    </property>
    <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>maprece_shuffle</value>
    </property>
    </configuration>


    2.2.6修改slaves(slaves是指定子节点的位置,因为要在HA181上启动HDFS、在HA183启动yarn,
    所以HA181上的slaves文件指定的是datanode的位置,HA183上的slaves文件指定的是nodemanager的位置)
    HA185
    HA186
    HA187

    2.2.7配置免密码登陆
    #首先要配置HA181到HA182、HA183、HA184、HA185、HA186、HA187的免密码登陆
    #在HA181上生产一对钥匙
    ssh-keygen-trsa
    #将公钥拷贝到其他节点,包括自己
    ssh--idHA181
    ssh--idHA182
    ssh--idHA183
    ssh--idHA184
    ssh--idHA185
    ssh--idHA186
    ssh--idHA187
    #配置HA183到HA184、HA185、HA186、HA187的免密码登陆
    #在HA183上生产一对钥匙
    ssh-keygen-trsa
    #将公钥拷贝到其他节点
    ssh--idHA184
    ssh--idHA185
    ssh--idHA186
    ssh--idHA187
    #注意:两个namenode之间要配置ssh免密码登陆,别忘了配置HA182到HA181的免登陆
    在HA182上生产一对钥匙
    ssh-keygen-trsa
    ssh--id-iHA181

    2.4将配置好的hadoop拷贝到其他节点
    scp-r/app/hadoop-2.5.1/HA182:/app/
    scp-r/app/hadoop-2.5.1/HA183:/app/
    scp-r/app/hadoop-2.5.1/HA184:/app/
    scp-r/app/hadoop-2.5.1/HA185:/app/
    scp-r/app/hadoop-2.5.1/HA186:/app/
    scp-r/app/hadoop-2.5.1/HA187:/app/
    ###注意:严格按照下面的步骤
    2.5启动zookeeper集群(分别在HA185、HA186、tcast07上启动zk)
    cd/app/zookeeper-3.4.5/bin/
    ./zkServer.shstart
    #查看状态:一个leader,两个follower
    ./zkServer.shstatus

    2.6启动journalnode(分别在在HA185、HA186、HA187上执行)
    cd/app/hadoop-2.5.1
    hadoop-daemon.shstartjournalnode
    #运行jps命令检验,HA185、HA186、HA187上多了JournalNode进程
    2.7格式化ZKFC(在HA181上执行即可) hdfszkfc-formatZK
    2.8格式化HDFS
    #在HA181上执行命令:
    hdfsnamenode-format
    #格式化后会在根据core-site.xml中的hadoop.tmp.dir配置生成个文件,这里我配置的是/app/hadoop-2.4.1/tmp,然后将/weekend/hadoop-2.4.1/tmp拷贝到HA182的/weekend/hadoop-2.4.1/下。
    scp-rtmp/HA182:/app/hadoop-2.5.1/
    ##也可以这样,建议hdfsnamenode-bootstrapStandby



    2.9启动HDFS(在HA181上执行)
    sbin/start-dfs.sh

    2.10启动YARN(#####注意#####:是在HA183上执行start-yarn.sh,把namenode和resourcemanager分开是因为性能问题,因为他们都要占用大量资源,所以把他们分开了,他们分开了就要分别在不同的机器上启动)
    sbin/start-yarn.sh


    到此,hadoop-2.4.1配置完毕,可以统计浏览器访问:
    http://192.168.1.181:50070
    NameNode'HA181:9000'(active)
    http://192.168.1.182:50070
    NameNode'HA182:9000'(standby)

    验证HDFSHA
    首先向hdfs上传一个文件
    hadoopfs-put/etc/profile/profile
    hadoopfs-ls/
    然后再kill掉active的NameNode
    kill-9<pidofNN>
    通过浏览器访问:http://192.168.1.182:50070
    NameNode'HA182:9000'(active)
    这个时候HA182上的NameNode变成了active
    在执行命令:
    hadoopfs-ls/
    -rw-r--r--3rootsupergroup19262014-02-0615:36/profile
    刚才上传的文件依然存在!!!
    手动启动那个挂掉的NameNode
    sbin/hadoop-daemon.shstartnamenode
    通过浏览器访问:http://192.168.1.181:50070
    NameNode'HA181:9000'(standby)

    验证YARN:
    运行一下hadoop提供的demo中的WordCount程序:
    hadoopjarshare/hadoop/maprece/hadoop-maprece-examples-2.4.1.jarwordcount/profile/out

    OK,大功告成!!!
    CID-74d21742-3e4b-4df6-a99c-d52f703b49c0



    测试集群工作状态的一些指令:
    bin/hdfsdfsadmin-report 查看hdfs的各节点状态信息


    bin/hdfshaadmin-getServiceStatenn1 获取一个namenode节点的HA状态

    sbin/hadoop-daemon.shstartnamenode单独启动一个namenode进程


    ./hadoop-daemon.shstartzkfc单独启动一个zkfc进程

    ㈥ hadoop搭建时为什么要重新编译源码的解释

    把你编译后的hadoop源码丢到原来的hadoop集群环境中去 即覆盖hadoop安装目录下的原hadoop-core-xxx.jar 同样的所有节点都需要更新 然后重启集群

    ㈦ hadoop源码修改了,编译成功后,将编译后的hadoop文件直接拿来搭建么,还是需要经过什么处理呢

    把你编译后的hadoop源码丢到原来的hadoop集群环境中去 即覆盖hadoop安装目录下的原hadoop-core-xxx.jar 同样的所有节点都需要更新 然后重启集群

    ㈧ 为什么要编译apache hadoop2.2.0源代码

    hadoop是不需要编译的,解压就可以直接使用了,操作如下: tar –zxvf hadoop-2.2.0.tar.gz #解压"hadoop-2.2.0.tar.gz"安装包mv hadoop-2.2.0 /usr/local/hadoop #将"hadoop-2.2.0"移动到/usr/local目录下chown –R hadoop:hadoop /usr/local/had...

    ㈨ 如何重新编译hadoop jar包

    重新编译hadoop jar包:
    编译打包
    由于hadoop打包时需要依赖于操作系统的底层。
    sudo apt-get install autoconf
    sudo apt-get install automake
    sudo apt-get install autotool
    sudo apt-get install libtool
    4.安装jdk1.5 和apache-forrest-0.8
    打包命令:ant package -Djava5.home=/home/rongneng/env/jdk1.5.0_22 -Dforrest.home=/home/rongneng/env/apache-forrest-0.8

    ㈩ hadoop 2.8.2 怎么编译

    在不使用eclipse情况使java程序在hadoop
    2.2中运行的完整过程。整个过程中其实分为java程序的编译,生成jar包,运行测试。
    这三个步骤运用的命令都比较简单,主要的还是如何找到hadoop
    2.2提供给java程序用来编译的jar包。具体可以查看:
    HADOOP_HOME/share/hadoop/httpfs/tomcat/webapps/webhdfs/WEB-INF/lib目录
    下面会通过一个在hadoop中创建一个目录的JAVA例子来进行演示
    具体代码如下:
    package
    com.wan.demo;
    import
    java.io.IOException;
    import
    org.apache.hadoop.conf.Configuration;
    import
    org.apache.hadoop.fs.FileSystem;
    import
    org.apache.hadoop.fs.Path;
    public
    class
    HADemo
    {
    public
    static
    void
    main(String[]
    args)
    {
    //
    TODO
    Auto-generated
    method
    stub
    mkdir(args[0]);
    }
    public
    static
    void
    mkdir(String
    dir){
    Configuration
    configuration=new
    Configuration();
    FileSystem
    fs;
    try
    {
    fs
    =
    FileSystem.get(configuration);
    fs.mkdirs(new
    Path(dir));
    fs.close();
    }
    catch
    (IOException
    e)
    {
    //
    TODO
    Auto-generated
    catch
    block
    e.printStackTrace();
    }
    }
    }
    把HADemo.java文件拷贝到linux环境中
    配置HADOOP_HOME/bin到环境中,启动集群,进入HADemo.java文件目录中
    注:下面的lib目录里面的文件由HADOOP_HOME/share/hadoop/httpfs/tomcat/webapps/
    webhdfs/WEB-INF/lib目录中获取,下面做的目的是为了缩减命令长度
    1.编译java
    #
    mkdir
    class
    #Javac
    -classpath
    .:lib/hadoop-common-2.2.0.jar:lib/hadoop-annotations-2.2.0.jar
    -d
    class
    HADemo.java
    2.生成jar包
    #jar
    -cvf
    hademo.jar
    -C
    class/
    .
    added
    manifest
    adding:
    com/(in
    =
    0)
    (out=
    0)(stored
    0%)
    adding:
    com/wan/(in
    =
    0)
    (out=
    0)(stored
    0%)
    adding:
    com/wan/demo/(in
    =
    0)
    (out=
    0)(stored
    0%)
    adding:
    com/wan/demo/HADemo.class(in
    =
    844)
    (out=
    520)(deflated
    38%)
    3.测试运行
    #hadoop
    jar
    hademo.jar
    com.wan.demo.HADemo
    /test
    检测:
    #hadoop
    fs
    -ls
    /

    阅读全文

    与hadoop为什么重新编译相关的资料

    热点内容
    自己购买云主服务器推荐 浏览:419
    个人所得税java 浏览:761
    多余的服务器滑道还有什么用 浏览:189
    pdf劈开合并 浏览:28
    不能修改的pdf 浏览:751
    同城公众源码 浏览:488
    一个服务器2个端口怎么映射 浏览:297
    java字符串ascii码 浏览:78
    台湾云服务器怎么租服务器 浏览:475
    旅游手机网站源码 浏览:332
    android关联表 浏览:945
    安卓导航无声音怎么维修 浏览:332
    app怎么装视频 浏览:430
    安卓系统下的软件怎么移到桌面 浏览:96
    windows拷贝到linux 浏览:772
    mdr软件解压和别人不一样 浏览:904
    单片机串行通信有什么好处 浏览:340
    游戏开发程序员书籍 浏览:860
    pdf中图片修改 浏览:288
    汇编编译后 浏览:491