ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Hadoop 0.23.x从原理详解到安装体验(3)(转)

Hadoop 0.23.x从原理详解到安装体验(3)(转)

原创 Linux操作系统 作者:cncore 时间:2012-06-03 10:31:17 0 删除 编辑

部署步骤:

  (1) 配置SSH无密码登录,注意所有的NameNode都要能够无密码登录到所有的DataNode中。

  (2)配置环境变量,hadoop的那些执行脚本会用到。

  在~/.bashrc文件内添加(注意,此处我们目前只配置了HDFS的环境变量,没有配置MapReduce/yarn的环境变量)

  export HADOOP_DEV_HOME=/home/administrator/cloud/hadoop-0.23.1

  export HADOOP_COMMON_HOME=$HADOOP_DEV_HOME

  export HADOOP_HDFS_HOME=$HADOOP_DEV_HOME

  export HADOOP_CONF_DIR=$HADOOP_DEV_HOME/etc/hadoop

 

  (3)在libexec/hadoop-config.sh中添加JAVA_HOME ==/usr/lib/jvm/java-6-openjdk

  (4)然后就是按照我们的部署方案,配置hadoop的参数了。我们前面已经提到了,在0.23.1之后的版本中,hadoop的配置文件都是放到了etc/hadoop/目录里,而且所有节点的配置文件都是统一的,省得还去区分NameNode和DataNode,配置一份然后拷贝到所有节点就行了。我们首先修改core-site.xml,添加hadoop.tmp.dir属性。由于在core-default.xml中,hadoop.tmp.dir被默认设置在/tmp目录下,重启机器数据就会丢失,所以我们必须覆盖这个配置项。



<property>

hadoop.tmp.dir

/home/administrator/cloud/tmp

property>



 

  Hdfs-site.xml中的配置项:



<property>

dfs.namenode.name.dir

file:///home/administrator/cloud/hdfs23

property>

<property>

dfs.federation.nameservices

ns1,ns2

property>

<property>

dfs.namenode.rpc-address.ns1

192.168.12.133:9000

property>

<property>

dfs.namenode.http-address.ns1

192.168.12.133:23001

property>

<property>

dfs.namenode.secondary.http-address.ns1

192.168.12.133:23002

property>

<property>

dfs.namenode.rpc-address.ns2

192.168.12.134:9000

property>

<property>

dfs.namenode.http-address.ns2

192.168.12.134:23001

property>

<property>

dfs.namenode.secondary.http-address.ns2

192.168.12.134:23002

property>


 

  NameNode federation的配置其实是向后兼容的,你还可以像原来的方式一样把它配置成single namenode。对于我们想配置成NameNode federation的方式的话,引入了一些新的参数如下表所示:

  Daemon Configuration Parameter

  Namenode dfs.namenode.rpc-address

   dfs.namenode.servicerpc-address

   dfs.namenode.http-address

   dfs.namenode.https-address

   dfs.namenode.keytab.file

   dfs.namenode.name.dir

   dfs.namenode.edits.dir

   dfs.namenode.checkpoint.dir

   dfs.namenode.checkpoint.edits.dir

   dfs.federation.nameservices

  Secondary Namenode dfs.namenode.secondary.http-address dfs.secondary.namenode.keytab.file

  BackupNode dfs.namenode.backup.address dfs.secondary.namenode.keytab.file

  就像我的部署实例中描述的那样,dfs.federation.nameservices表示两个NameServiceID,在我的例子中分别是ns1和ns2。然后分别配置这两个nameservice的rpc-address。这个dfs.namenode.rpc-address.是非常重要的属性,因为在后续对NameService的访问中都是通过这个属性的值来完成的。dfs.namenode.http-address是通过web浏览器访问监控信息的端口,也就是默认50070的那个端口。dfs.namenode.name.dir和dfs.namenode.edits.dir表示的是NameNode节点的Namespace元数据存放的本地目录,默认是在hadoop.tmp.dir目录下的某一位置,我们可以修改。

  同时,这里面提到了两个RPC端口,分别是dfs.namenode.rpc-address和dfs.namenode.servicerpc-address。如果像我的例子中一样,只配置dfs.namenode.rpc-address,那么NameNode-Client和NameNode-DataNode之间的RPC都走的是这个端口。如果配置了后者与前者不同,那么dfs.namenode.rpc-address表示的是NameNode-Client之间的RPC,而dfs.namenode.servicerpc-address表示的是NameNode-DataNode之间的RPC。之所以要区别开来,我想主要是因为datanode和namenode通讯时不会影响client和namenode的通讯,因为同一个端口同时打开的句柄毕竟是预先设定的,缺省为10个。

  (5)配置好了这些之后,就可以格式化文件系统了。由于我们部署了2个NameNode,所以我们需要在133和134两台机器上分别执行${HADOOP_DEV_HOME}/bin/hdfs namenode -format -clusterid eric命令。注意两台机器上指定的clusterid是一样的,表示这两个namenode组成的是同一个集群。

  那么在执行了format之后,在192.168.12.133节点的dfs.namenode.name.dir目录下生成了current目录,在current目录里有个VERSION文件,内容如下:

#Thu Apr 19 11:29:05 CST 2012

namespaceID=2025563670

clusterID=eric

cTime=0

storageType=NAME_NODE

blockpoolID=BP-1450194670-192.168.12.133-1334806145084

layoutVersion=-39

 

  和以前的版本相比多了clusterID和blockpoolID这两项。clusterID就是我们刚才在format时指定的集群ID,在整个集群中是唯一的。而blockpoolID就是针对每一个Namespace所对应的blockpool的ID,上面的这个BP-1450194670-192.168.12.133-1334806145084就是在我的ns1的namespace下的存储块池的ID,这个ID包括了其对应的NameNode节点的ip地址。

  在format的同时也会生成fsimage和edits文件,及其对应的md5校验文件。

  

  然后就可以通过执行sbin/start-dfs.sh启动整个HDFS集群了。

  (6)FsShell使用

  在使用过程中也有些不同,例如使用FsShell进行一些文件操作,例如原来的操作是:

Bin/hadoop fs –put /home/test /cloud/

  那么现在要这样操作

Bin/hadoop fs –put /home/test hdfs://192.168.12.133:9000/cloud/

 

  也就是说从FsShell中操作文件要指定HDFS的namespace,这也是我前面说的为什么dfs.namenode.rpc-address这个属性很重要的原因。

  而且在0.23.1以后的版本中,像bin/hdfs dfsadmin –report这样的命令执行是需要配置fs.default.name这个参数的。也就是说很多hdfs的命令需要指定相应的namespace,然后这个shell的操作都是对这个namespace的操作。

  当然大多数情况下还是利用client-api来进行hdfs的操作,从api的角度看,现在提供的接口除了DistributedFileSystem外,又提供了一个DFSAdmin接口,用于对文件系统的管理操作。hadoop在后续的版本中会发布hadoop-client这个工程模块,相信会把client的易用性有所提升。

  (7)web监控界面

  

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/680949/viewspace-731785/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2012-06-03

  • 博文量
    1
  • 访问量
    2256