centos 6.3下安装Hadoop 2.7.1并配置伪分布式集群

 看网上很多人都说,Hadoop 1.x和 2.x的区别,可能就是版本稳定性的区别。因为1.x版本的不会再更新和修复Bug了。但是 2.x 的兴起,就意味着抛弃很多老版的东西。

     1.下载2.7.1版本的Hadoop发行版

      登录Hadoop官方网站下载最新的2.7.1 binary版本:(下最大的那个安装包~)
     
      

      点开以后,就有两种方法来下载安装包了,一个在centos中使用" wget " 命令,一个就是在windows中使用winSCP软件实现与centos的文件传输。


            下载完hadoop-2.7.1.tar.gz,拷贝到 /home目录下,然后在该目录下解压安装生成文件/hadoop-2.7.1, 即hadoop被安装到/home/hadoop-2.7.1目录里

    2.配置Hadoop环境变量

      使用命令“vim /etc/profile”
     export HADOOP_HOME=/home/hadoop-2.7.1
     export PATH=$HADOOP_HOME/bin:$PATH
     保存退出后,使用"source /etc/profile"使设置生效。

 3.配置 Hadoop-env.h文件

    
 
   使用"vim hadoop-env.sh",export JAVA_HOME=/home/hadoop-2.7.1/java,编辑后保存退出。hadoop-env.sh文件中本身就有JAVA_HOME这行,我们只需要把前面的注释#取消,然后修改JAVA_HOME的路径即可。

 4.安装hadoop并且配置文件

 配置hadoop伪分布式文件,记得使用vi或vim命令进行修改和保存退出。

[plain]  view plain copy
  1. <span style="font-family:Microsoft YaHei;font-size:12px;">在etc/hadoop/core-site.xml:  
  2.   
  3. <configuration>  
  4.     <property>  
  5.         <name>fs.defaultFS</name>  
  6.         <value>hdfs://localhost:9000</value>  
  7.     </property>  
  8. </configuration></span>  

     上述配置说明:hadoop分布式文件系统的两个重要的目录结构,一个是namenode名字空间的存放地方,一个是datanode数据块的存放地方,还有一些其他的文件存放地方,这些存放地方都是基于fs.defaultFS目录的,比如namenode的名字空间存放地方就是 ${fs.defaultFS}/dfs/name,datanode数据块的存放地方就是${fs.defaultFS}/dfs/data,所以设置好fs.defaultFS目录后,其他的重要目录都是在这个目录下面,这是一个根目录。

[plain]  view plain copy
  1. 在etc/hadoop/hdfs-site.xml:  
  2.   
  3. <configuration>  
  4.     <property>  
  5.         <name>dfs.replication</name>  
  6.         <value>1</value>  
  7.     </property>  
  8. </configuration>  

   说明:这里的dfs.replication的value为1是因为我们这里配置的是单机伪分布式,只有一台机子 。

    5.启动hadoop

[plain]  view plain copy
  1. [root@localhost hadoop-2.7.1]# cd sbin  
  2. [root@localhost sbin]# hadoop namenode -format  
  3. DEPRECATED: Use of this script to execute hdfs command is deprecated.  
  4. Instead use the hdfs command for it.  
  5. 15/07/12 02:22:44 INFO namenode.NameNode: STARTUP_MSG:  
  6. /************************************************************  
  7. STARTUP_MSG: Starting NameNode  
  8. STARTUP_MSG:   host = localhost.localdomain/127.0.0.1  
  9. STARTUP_MSG:   args = [-format]  
  10. STARTUP_MSG:   version = 2.7.1  
  11. STARTUP_MSG:   java = 1.7.0_79  
  12. ************************************************************/  
  13. 中间省略若干。。。。  
  14. /************************************************************  
  15. SHUTDOWN_MSG: Shutting down NameNode at localhost.localdomain/127.0.0.1  
  16. ************************************************************/  
    新版的hadoop2.7.1版本的系统可执行文件在/home/hadoop-2.7.1/sbin中,和1.x版本的bin可执行文件有点不同。
    启动hadoop所有进程,使用"./start-dfs.sh"命令,因为在2.x版本中,"start-all.sh"命令已经被摒弃了。
[plain]  view plain copy
  1. [root@localhost sbin]# ./start-dfs.sh  
  2. 15/07/12 02:26:17 WARN util.NativeCodeLoader: Unable to load native-hadoop libra using builtin-java classes where applicable  
  3. Starting namenodes on [localhost]  
  4. localhost: starting namenode, logging to /home/hadoop-2.7.1/logs/hadoop-root-nammain.out  
  5. localhost: starting datanode, logging to /home/hadoop-2.7.1/logs/hadoop-root-datmain.out  
  6. Starting secondary namenodes [0.0.0.0]  
  7. 0.0.0.0: starting secondarynamenode, logging to /home/hadoop-2.7.1/logs/hadoop-rocalhost.localdomain.out  
  8. 15/07/12 02:26:45 WARN util.NativeCodeLoader: Unable to load native-hadoop libra using builtin-java classes where applicable  
  9. [root@localhost sbin]# jps  
  10. 2957 NameNode  
  11. 3341 Jps  
  12. 3224 SecondaryNameNode  
  上面出现了一个错误,执行"start-dfs.sh"命令后,datanode却没有启动。
[plain]  view plain copy
  1. <span style="color:#555555;">2015-07-12 02:30:11,369 INFO org.apache.hadoop.ipc.Server: IPC Server Responder: starting  
  2. 2015-07-12 02:30:11,373 INFO org.apache.hadoop.ipc.Server: IPC Server listener on 50020: starting  
  3. 2015-07-12 02:30:12,345 INFO org.apache.hadoop.hdfs.server.common.Storage: Lock on /tmp/hadoop-ro  
  4. </span><span style="color:#ff6666;">2015-07-12 02:30:12,348 WARN org.apache.hadoop.hdfs.server.common.Storage: java.io.IOException: I = CID-bedad193-15c3-42cc-8f1f-2888abfcbe93; datanode clusterID = CID-92e43622-3107-4382-b360-4ef</span><span style="color:#555555;">  
  5. 2015-07-12 02:30:12,359 FATAL org.apache.hadoop.hdfs.server.datanode.DataNode: Initialization failocalhost/127.0.0.1:9000. Exiting.  
  6. java.io.IOException: All specified directories are failed to load.  
  7. </span>  

     从日志中可以看出,原因是因为datanode的clusterID 和 namenode的clusterID 不匹配。解决方法:打开hdfs-site.xml文件配置的datanode和namenode对应的目录,在tmp/hadoop-root/dfs目录下分别打开data和name目录下current文件夹里的VERSION,可以看到clusterID项正如日志里记录的一样,确实不一致,修改datanode里VERSION文件的clusterID 与namenode里的一致,再重新启动dfs(执行start-dfs.sh)再执行jps命令,可以看到datanode已正常启动。出现该问题的原因:在第一次格式化dfs后,启动并使用了hadoop,后来又重新执行了格式化命令(hdfs namenode -format),这时namenode的clusterID会重新生成,而datanode的clusterID 保持不变。下面就是正确启动了hadoop伪分布式集群~

[plain]  view plain copy
  1. [root@localhost bin]# hdfs |grep format  
  2.   namenode -format     format the DFS filesystem  
  3. [root@localhost bin]# ls  
  4. container-executor  hadoop  hadoop.cmd  hdfs  hdfs.cmd  mapred  mapred.cmd  rcc  test-container-e  
  5. [root@localhost bin]# jps  
  6. 4558 SecondaryNameNode  
  7. 7215 Jps  
  8. 4284 NameNode  
  9. 4379 DataNode  

  6.使用hadoop命令(具体的还是看hadoop官网的File System Shell Guide

[plain]  view plain copy
  1. [root@localhost ~]# hadoop fs   
  2. Usage: hadoop fs [generic options]  
  3.         [-appendToFile <localsrc> ... <dst>]  
  4.         [-cat [-ignoreCrc] <src> ...]  
  5.         [-checksum <src> ...]  
  6.         [-chgrp [-R] GROUP PATH...]  
  7.         [-chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...]  
  8.         [-chown [-R] [OWNER][:[GROUP]] PATH...]  
  9.         [-copyFromLocal [-f] [-p] [-l] <localsrc> ... <dst>]  
  10.         [-copyToLocal [-p] [-ignoreCrc] [-crc] <src> ... <localdst>]  
  11.         [-count [-q] [-h] <path> ...]  
  12.         [-cp [-f] [-p | -p[topax]] <src> ... <dst>]  
  13.         [-createSnapshot <snapshotDir> [<snapshotName>]]  
  14.         [-deleteSnapshot <snapshotDir> <snapshotName>]  
  15.         [-df [-h] [<path> ...]]  
  16.         [-du [-s] [-h] <path> ...]  
  17.         [-expunge]  
  18.         [-find <path> ... <expression> ...]  
  19.         [-get [-p] [-ignoreCrc] [-crc] <src> ... <localdst>]  
  20.         [-getfacl [-R] <path>]  
  21.         [-getfattr [-R] {-n name | -d} [-e en] <path>]  
  22.         [-getmerge [-nl] <src> <localdst>]  
  23.         [-help [cmd ...]]  
  24.         [-ls [-d] [-h] [-R] [<path> ...]]  
  25.         [-mkdir [-p] <path> ...]  
  26.         [-moveFromLocal <localsrc> ... <dst>]  
  27.         [-moveToLocal <src> <localdst>]  
  28.         [-mv <src> ... <dst>]  
  29.         [-put [-f] [-p] [-l] <localsrc> ... <dst>]  
  30.         [-renameSnapshot <snapshotDir> <oldName> <newName>]  
  31.         [-rm [-f] [-r|-R] [-skipTrash] <src> ...]  
  32.         [-rmdir [--ignore-fail-on-non-empty] <dir> ...]  
  33.         [-setfacl [-R] [{-b|-k} {-m|-x <acl_spec>} <path>]|[--set <acl_spec> <path>]]  
  34.         [-setfattr {-n name [-v value] | -x name} <path>]  
  35.         [-setrep [-R] [-w] <rep> <path> ...]  
  36.         [-stat [format] <path> ...]  
  37.         [-tail [-f] <file>]  
  38.         [-test -[defsz] <path>]  
  39.         [-text [-ignoreCrc] <src> ...]  
  40.         [-touchz <path> ...]  
  41.         [-truncate [-w] <length> <path> ...]  
  42.         [-usage [cmd ...]]  
  43.   
  44. Generic options supported are  
  45. -conf <configuration file>     specify an application configuration file  
  46. -D <property=value>            use value for given property  
  47. -fs <local|namenode:port>      specify a namenode  
  48. -jt <local|resourcemanager:port>    specify a ResourceManager  
  49. -files <comma separated list of files>    specify comma separated files to be copied to the map reduce cluster  
  50. -libjars <comma separated list of jars>    specify comma separated jar files to include in the classpath.  
  51. -archives <comma separated list of archives>    specify comma separated archives to be unarchived on the compute machines.  
  52.   
  53. The general command line syntax is  
  54. bin/hadoop command [genericOptions] [commandOptions]<span style="line-height: 35px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: rgb(255, 255, 255);"> </span>  

      创建好了伪分布式集群,现在就要开始熟悉hadoop命令了。。。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值