hadoop 2.x 安装步骤

一、准备工作

1、打通两台机器的ssh信任关系

2、关闭防火墙sudo /sbin/service iptables stop 

3、禁用ipv6,即注释掉

::1            localhost6.localdomain6 localhost6

这行

4、假设机器A(IP为xx.xx.xx.237,hostname为s237)为master ,机器B(IP为xx.xx.xx.236,hostname为s236)为slave

5、在A上新建目录~/hadoop_hbase/

下载相应版本的hadoop

<pre>wget http://mirrors.cnnic.cn/apache/hadoop/common/hadoop-2.5.2/hadoop-2.5.2.tar.gz</pre>

下载相应版本的java,这里用的是1.7

解压

6、改.bashrc

  1. JAVA_HOME=~/hadoop_hbase/jdk1.7.0_51  
  2. HADOOP_HOME=~/hadoop_hbase//hadoop  
  3. PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin  
  4. export JAVA_HOME HADOOP_HOME PATH 

source .bashrc  使环境变量生效

二、配置

1、配置${HADOOP_HOME}/etc/hadoop/core-site.xml

  1. <configuration>  
  2.     <property>  
  3.         <name>fs.defaultFS</name>  
  4.         <value>hdfs://s237:9000</value>  
  5.     </property>  
  6.     <property>  
  7.         <name>hadoop.tmp.dir</name>  
  8.         <value>/var/hadoop</value>  
  9.     </property>  
  10. </configuration>  
对于一个新集群来说,唯一必须修改的项是:fs.defaultFS,该项指明了文件系统的访问入口,实际上是告知所有的datanode它们的namenode是哪一个从而建立起namenode与各datanode之间的通信。

2、配置${HADOOP_HOME}/etc/hadoop/hdfs-site.xml

[html]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <configuration>  
  2.     <property>  
  3.         <name>dfs.namenode.secondary.http-address</name>  
  4.         <value>s237:50090</value>  
  5.     </property>  
  6.     <property>  
  7.         <name>dfs.replication</name>  
  8.         <value>1</value>  
  9.     </property>  
  10. </configuration>  
hdfs-site.xml的各项默认配置可参考: http://hadoop.apache.org/docs/r2.2.0/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml 对于一个新集群来说这个文件没没有必须修改的项,但是有几个重要的配置项是可能需要修改的,主要是如下几项:
    • dfs.namenode.secondary.http-address //指定secondary namenode结点,若不指定,在使用start-dfs.sh启动时,当前节点将自动成为secondary namenode
    • dfs.replication  //每一个block的复制份数,默认是3,如果集群datanode结点数量小于3应将该值设置小于或等于datanode的结点数量
    • dfs.namenode.name.dir //存放namenode相关数据的文件夹
    • dfs.datanode.data.dir //存放datanade相关数据的文件夹
    • dfs.namenode.checkpoint.dir //存放secondary namenode相关数据的文件夹

    对于后三项来说,它们的默认值也都是在${hadoop.tmp.dir}之下的子文件夹,你可以根据集群的实际情况修改这三个值。比如:把它们改到一个挂载到NFS上的文件夹。

    3、配置${HADOOP_HOME}/etc/hadoop/mapred-site.xml


    在${HADOOP_HOME}/etc/hadoop下拷贝一份mapred-site.xml.template命名为mapred-site.xml,添加如下内容:

    [html]  view plain copy 在CODE上查看代码片 派生到我的代码片
    1. <configuration>  
    2.     <property>  
    3.         <name>mapreduce.framework.name</name>  
    4.         <value>yarn</value>  
    5.     </property>  
    6. </configuration>  

    mapred-site.xml的各项默认配置可参考:hadoop.apache.org/docs/r2.2.0/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapred-default.xml 该文件唯一一个必须要修改的项是mapreduce.framework.name,该项告诉hadoop使用何种框架执行map-reduce任务。

    4、 配置${HADOOP_HOME}/etc/hadoop/yarn-site.xml

    [html]  view plain copy 在CODE上查看代码片 派生到我的代码片
    1. <configuration>  
    2.     <property>  
    3.         <name>yarn.resourcemanager.hostname</name>  
    4.         <value>s237</value>  
    5.     </property>  
    6.     <property>  
    7.         <name>yarn.nodemanager.aux-services</name>  
    8.         <value>mapreduce_shuffle</value>  
    9.     </property>  
    10. </configuration>  

    yarn-site.xml的各项默认配置可参考: http://hadoop.apache.org/docs/r2.2.0/hadoop-yarn/hadoop-yarn-common/yarn-default.xml 该文件必须修改的项有两个,基中yarn.resourcemanager.hostname项与core-site.xml的fs.defaultFS项类似,该项为所有的nodemanager指明了resourcemanager,建立起resourcemanager与各nodemanager之间的通信。

    5、配置slave结点列表

    通常情况我们使用start-dfs.sh脚本来启动整个集群,查看该脚本可以知道,该脚本会基于配置文件在目标结点上启动namenode,secondary namenode, 和slave(datanode)结点,slave(datanode)的列表是在 ${HADOOP_HOME}/etc/hadoop/slaves文件中配置的,一个结点一行。所以我们需要在此文件中添加所有的datanode机器名或IP,本例中把s236添加进去

    6、将master机器上的hadoop_hbase目录同步到slave机器上,再把.bashrc也scp过去
    三、 启动
    初启动前,需要首先格式化集群,执行命令:

    hadoop namenode -format

    1、启动hdfs

    执行:

    start-dfs.sh

    该命令可以任意结点上执行。不过需要注意的是如果配置文件中没有指明secondary namenode(即在hdfs-site.xml中没有配置dfs.namenode.secondary.http-address),那么在哪个结点上执行该命令,该点将自动成为secondary namenode.

    以下单独启动某项服务的命令:

    启动namenode 

    hadoop-daemon.sh start namenode

    启动secondarynamenode

    hadoop-daemon.sh start secondarynamenode

    启动datanode

    hadoop-daemon.sh start datanode

    启动之后,访问:

    http://YOUR-NAMENODE:50070

    检查HDFS各结点情况,如都能访问表示HDFS已无问题,如无法访问或缺少节点,可分析log的中的信息找出问题原因。

    2、启动yarn

    执行:

    start-yarn.sh

    该命令可以任意结点上执行。其slaves结点与hdfs一样,读取的也是 ${HADOOP_HOME}/etc/hadoop/slaves文件。

    以下单独启动某项服务的命令:

    启动resourcemanager

    yarn-daemon.sh start resourcemanager

    启动nodemanager

    yarn-daemon.sh start nodemanager

    启动之后,访问:

    http://YOUR-RESOURCE-MANAGER:8088

    检查YARN各结点情况,如都能访问表示YARN无问题,如无法访问或缺少节点,可分析log的中的信息找出问题原因。

    最后
    hadoop fs -mkdir /user 看看是否成功创建了目录了呢?


    注意

    上述hadoop的配置中,用ip还是host,甚至是自己在/etc/hosts中自定义的host,都是可以的,没问题,但是,如果不用机器本身的hostname,那么在hbase配置中就会出现问题,所以这里最好都用机器名,有/etc/hosts中最好也绑定一下ip与机器名的关系,注意的是,要绑一定绑的是ip地址,不能绑127.0..0.1

    即:10.101.11.11 myserver.cm6  不能写成127.0.0.1 myserver.cm6


    常见问题

    一、hdfs的SecondaryNameNode的日志报Inconsistent checkpoint fields异常

        此参数最好在安装时进行配置

    ?
    1
    2
    3
    4
    < property >
         < name >hadoop.tmp.dir</ name >
         < value >/data/hadoop/tmp</ value >
    </ property >
    二、 java.io.IOException: Incompatible clusterIDs in /usr/local/hadoop/hdfs/data: namenode clusterID = CID-af6f15aa-efdd-479b-bf55-77270058e4f7; datanode clusterID = CID-736d1968-8fd1-4bc4-afef-5c72354c39ce


    从日志中可以看出,原因是因为datanode的clusterID 和 namenode的clusterID 不匹配。

     

    打开hdfs-site.xml里配置的datanode和namenode对应的目录,分别打开current文件夹里的VERSION,可以看到clusterID项正如日志里记录的一样,确实不一致,修改datanode里VERSION文件的clusterID 与namenode里的一致,再重新启动dfs(执行start-dfs.sh)再执行jps命令可以看到datanode已正常启动。

     

    出现该问题的原因:在第一次格式化dfs后,启动并使用了hadoop,后来又重新执行了格式化命令(hdfs namenode -format),这时namenode的clusterID会重新生成,而datanode的clusterID 保持不变。

    三、hadoop进入了安全模式

    因磁盘空间不足,内存不足,系统掉电等其他原因导致dataNode datablock丢失,出现如下类似日志:

     

    The number of live datanodes 3 has reached the minimum number 0.

    Safe mode will be turned off automatically once the thresholds have been reached.

    Caused by: org.apache.hadoop.hdfs.server.namenode.SafeModeException: Log not rolled.

     Name node is in safe mode.

    The reported blocks 632758 needs additional 5114 blocks to reach the threshold 0.9990

    of total blocks 638510.

    The number of live datanodes 3 has reached the minimum number 0.

    Safe mode will be turned off automatically once the thresholds have been reached.

    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.checkNameNodeSafeMode

    (FSNamesystem.java:1209)

        ... 12 more

    解决方法:

     步骤 1     执行命令退出安全模式:hadoop dfsadmin -safemode leave

      步骤 2     执行健康检查,删除损坏掉的block。  hdfs fsck  /  -delete

    然后再重新format 重新启动




    • 0
      点赞
    • 0
      收藏
      觉得还不错? 一键收藏
    • 0
      评论

    “相关推荐”对你有帮助么?

    • 非常没帮助
    • 没帮助
    • 一般
    • 有帮助
    • 非常有帮助
    提交
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值