Hadoop 第二课 Hadoop2.7.3集群搭建

说明:搭建平台为ubuntu16.04 (为什么在Ubuntu 上,请看hadoop第一课)
一:环境准备(必备)
1:jdk oracle
我使用的是java version “1.8.0_101”
没有的话,$ wget http://download.oracle.com/otn-pub/java/jdk/8u111-b14/jdk-8u111-linux-x64.tar.gz
解压配好环境变量
~/.bashrc添加

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_101
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH

2:ssh远程免登录
具体见:ssh远程免登陆配置
3:hadoop下载
$:wget http://mirrors.cnnic.cn/apache/hadoop/common/hadoop-2.7.3/hadoop-2.7.3.tar.gz
二:配置hadoop(搭建三台,一个master两个slave)
1:分别对应修改/etc/hostname为master slave1 slave2
2:分别对应修改/etc/hosts改为:

192.168.0.26 master
192.168.0.24 slave1
192.168.0.27 slave2

3:进入hadoop/etc目录
1:master文件–>>改为master
2:slaves文件–>>增加slave节点

slave1
slave2

4:core-site.xml文件–>>增加hadoop核心配置(hdfs文件端口是9000、file:/hadoop/tmp、)

<configuration> 

<property> 

    <name>fs.defaultFS</name> 

    <value>hdfs://master:9000</value> 

</property> 

<property> 

    <name>io.file.buffer.size</name> 

    <value>131072</value> 

</property> 

<property> 

    <name>hadoop.tmp.dir</name> 

     <value>file:/home/tengxing/dev/hadoop/tmp</value>

    <description>Abasefor other temporary directories.</description> 

</property> 

<property> 

    <name>hadoop.proxyuser.spark.hosts</name> 

    <value>*</value> 

</property> 

<property> 

    <name>hadoop.proxyuser.spark.groups</name> 

    <value>*</value> 

</property> 

</configuration> 


4:hdfs-site.xml 文件–>>增加hdfs配置信息(namenode、datanode端口和目录位置)

<configuration> 
<property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/home/tengxing/dev/hadoop/dfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/home/tengxing/dev/hadoop/dfs/data</value>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>192.168.1.100:9001</value>
    </property>
    <property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
    </property>

</configuration> 

5:mapred-site.xml 文件–>>增加mapreduce配置(使用yarn框架、jobhistory使用地址以及web地址)

<configuration> 

    <property> 

        <name>mapreduce.framework.name</name> 

        <value>yarn</value> 

    </property> 

    <property> 

        <name>mapreduce.jobhistory.address</name> 

        <value>master:10020</value> 

    </property> 

    <property> 

        <name>mapreduce.jobhistory.webapp.address</name> 

        <value>master:19888</value> 

    </property> 

</configuration> 

5:yarn-site.xml 文件–>>增加yarn功能

“`

<property> 

    <name>yarn.nodemanager.aux-services</name> 

    <value>mapreduce_shuffle</value> 

</property> 

<property> 

    <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name> 

    <value>org.apache.hadoop.mapred.ShuffleHandler</value> 

</property> 

<property> 

    <name>yarn.resourcemanager.address</name> 

    <value>master:8032</value> 

</property> 

<property> 

    <name>yarn.resourcemanager.scheduler.address</name> 

    <value>master:8030</value> 

</property> 

<property> 

    <name>yarn.resourcemanager.resource-tracker.address</name> 

    <value>master:8035</value> 

</property> 

<property> 

    <name>yarn.resourcemanager.admin.address</name> 

    <value>master:8033</value> 

</property> 

<property> 

    <name>yarn.resourcemanager.webapp.address</name> 

    <value>master:8088</value> 

</property> 

“`——————到此hadoop搭建完毕
小技巧:先在master配好相关文件(~/.ssh/id_rsa.pub,hosts,hadoop整个文件夹)再通过scp 远程拷贝到其他机器,替换即可

——————————————————————————————————————
三:启动hadoop
①:格式化
./bin/hdfsnamenodeformat: ./sbin/start-all.sh
③:看群集状态
$ ./bin/hdfs dfsadmin -report
进入浏览器
查看hdfs:http://master:50070/
查看RM:http://master:8088/

————————————————————————华丽的分界线—————————————————————
b贴出一个刚刚搭建时候容易出的一个问题:
执行$ ./sbin/start-all.sh
明明看到说启动了。而http://master:50070/里面就是没有live nodes
看日志很重要
报错:WARN org.apache.hadoop.hdfs.server.common.Storage: Failed to add storage directory [DISK]file:/tmp/hadoop-hadoop/dfs/data/
Java.io.IOException: Incompatible clusterIDs in /tmp/hadoop-hadoop/dfs/data: namenode clusterID = CID-1ac4e49a-ff06-4a34-bfa2-4e9d7248855b; datanode clusterID = CID-3ae02e74-742f-4915-92e7-0625fa8afcc5
at org.apache.hadoop.hdfs.server.datanode.DataStorage.doTransition(DataStorage.java:775)
at org.apache.hadoop.hdfs.server.datanode.DataStorage.loadStorageDirectory(DataStorage.java:300)
at org.apache.hadoop.hdfs.server.datanode.DataStorage.loadDataStorage(DataStorage.java:416)
at org.apache.hadoop.hdfs.server.datanode.DataStorage.addStorageLocations(DataStorage.java:395)
at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:573)

java.io.IOException: All specified directories are failed to load.
……
分析原因:因为多次对namenode进行format,每一次format主节点NameNode产生新的clusterID、namespaceID,于是导致主节点的clusterID、namespaceID与各个子节点DataNode不一致。当format过后再启动hadoop,hadoop尝试创建新的current目录,但是由于已存在current目录,导致创建失败,最终引起DataNode节点的DataNode进程启动失败,从而引起hadoop集群完全启动失败
我就是这样格式化了很多次。
解决:
一个简单的解决方法是:直接删除数据节点DataNode的current文件夹
再次启动,OK

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值