zoukankan      html  css  js  c++  java
  • Hadoop 2.6.0 集群部署

      Hadoop的集群部署和单节点部署类似,配置文件不同,另外需要修改网络方面的配置

      首先,准备3台虚拟机,系统为CentOS 6.6,其中一台为namenode 剩余两台为 datanode;

      修改主机名主节点为:hadoopha,数据节点主机名分别为hadoop1、hadoop2,具体修改方法点击这里查看

      本例中这3台虚拟机处于同一个局域网,网络连接设置为桥接,ip地址分别为是hadoopha为:192.168.1.42,hadoop1为:192.168.1.78、hadoop2为:192.168.1.44,实际中可以设置静态ip为连续的

      然后修改hosts网络指向,用vim /etc/hosts打开文件,后面添加3行记录:

      192.168.1.42 hadoopha

      192.168.1.78 hadoop1

      192.168.1.44 hadoop2

      然后保存退出

      

      上面那些localhost指向不用改,新添加3行即可,这三台主机都要修改hosts文件保持一致

      以上是主机之间网络通信的基础,接下来在hadoopha上单独配置hadoop环境,hadoop1和hadoop2不用安装hadoop,只有jdk即可

      同样把hadoop解压到指定目录,配置一下HADOOP_HOME到环境变量中,然后进入hadoop安装目录,修改配置

      执行vim etc/hadoop/hadoop-env.sh

      把JAVA_HOME前面的注释去掉,值改成jdk的安装目录,并保存

      

      然后执行vim etc/hadoop/core-site.xml,在<configuration></configuration>之间添加如下配置:

     1     <property>
     2         <name>fs.defaultFS</name>
     3         <value>hdfs://hadoopha</value>
     4     </property>
     5     <property>
     6         <name>hadoop.tmp.dir</name>
     7         <value>/usr/hadoop</value>
     8     </property>
     9     <property>
    10         <name>dfs.name.dir</name>
    11         <value>/usr/hadoop/name</value>
    12     </property>

      执行vim etc/hadoop/hdfs-site.xml,同样位置添加如下配置:

     1     <property>
     2         <name>dfs.replication</name>
     3         <value>2</value>
     4     </property>
     5     <property>
     6         <name>dfs.namenode.name.dir</name>
     7         <value>file:///usr/hadoop/hdfs/name</value>
     8     </property>
     9     <property>
    10         <name>dfs.datanode.data.dir</name>
    11         <value>file:///usr/hadoop/hdfs/data</value>
    12     </property>
    13     <property>
    14         <name>dfs.nameservices</name>
    15         <value>hadoopha</value>
    16     </property>

      第一个配置项是datanode的节点数,这里是2个,就算这里写3也不起什么作用,因为不能超过实际的最大节点数,其中的存放目录可以自己定义

      执行vim etc/hadoop/mapred-site.xml,同样位置添加如下配置:

    1     <property>
    2         <name>mapreduce.framework.name</name>
    3         <value>yarn</value>
    4     </property>

      执行vim etc/hadoop/yarn-site.xml,添加如下配置:

     1     <property>
     2         <name>yarn.resourcemanager.hostname</name>
     3         <value>hadoopha</value>
     4     </property>
     5     <property>
     6         <name>yarn.nodemanager.aux-services</name>
     7         <value>mapreduce_shuffle</value>
     8     </property>
     9     <property>
    10         <name>yarn.resourcemanager.address</name>
    11         <value>hadoopha:8032</value>
    12     </property>
    13     <property>
    14         <name>yarn.resourcemanager.scheduler.address</name>
    15         <value>hadoopha:8030</value>
    16     </property>
    17     <property>
    18         <name>yarn.resourcemanager.resource-tracker.address</name>
    19         <value>hadoopha:8031</value>
    20     </property>
    21 
    22     <property>
    23         <name>yarn.resourcemanager.admin.address</name>
    24         <value>hadoopha:8033</value>
    25     </property>
    26     <property>
    27         <name>yarn.resourcemanager.webapp.address</name>
    28         <value>hadoopha:8088</value>
    29     </property>

      编辑slaves文件,执行etc/hadoop/slaves,之前默认只有一行内容localhost,把之前的删除添加下面配置:

      hadoop1

      hadoop2

      到这里文件就配置完了,

      然后退到上一层目录,把配置好的hadoop目录发送到hadoop1和hadoop2中

    $ scp -r hadoop-2.6.0/ hadoop1:/usr/hadoop/
    $ scp -r hadoop-2.6.0/ hadoop2:/usr/hadoop/

      这样三个主机的hadoop文件就实现了同步,然后格式化namenode节点

    bin/hadoop namenode -format

      只对主节点hadoopha进行格式化即可,格式化之后启动hadoop

    sbin/start-all.sh

      等待hadoop集群运行起来,然后用jps命令分别查看3个主机的hadoop进程

      hadoopha运行NameNode:

      

      hadoop1和hadoop2运行DataNode:

      

      这时候hadoop集群就启动成功了,然后打开浏览器通过web访问主节点可以管理集群

      HDFS管理:http://192.168.1.42:50070/

      

      可以看到详细的参数

      Map/Reduce管理:http://192.168.1.42:8088/

      可以看到详细的作业情况,和具体哪台机器的作业的情况

      通过命令行:bin/hdfs dfsadmin -report可以查看集群的运行状态

      需要注意:

      1、在hadoop2.x系列版本中,hdfs默认文件直接存放在根目录下,不在和1.x一样存放在/user/root/下了

      2、执行hdfs操作文件系统所有的命令时,比如bin/hdfs dfs -ls /会报错:WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

       

      虽然不影响使用,原因是从apache官网下载的hadoop-2.6.0.tar.gz是在32位机器上编译的,而集群机器是64位的,所以加载.so文件时出错,但是不影响使用,解决办法是下载64位编译包,解压到hadoop安装目录下lib/native下更新文件即可

      

      因为是./所以直接解压到本目录下,不用进行其他任何操作就可以了,下载链接:http://dl.bintray.com/sequenceiq/sequenceiq-bin/hadoop-native-64-2.6.0.tar

      接下来使用WordCount例子来测试集群的运行:

      首先进入hadoop安装目录,执行下面命令测试:

    $ mkdir input
    $ echo "Hello world bye jj" >> file1
    $ echo "Hello Hadoop bye hadoop" >> file2
    $ bin/hdfs dfs -mkdir /input
    $ bin/hdfs dfs -put input/* /input

      这样文件就上传到了HDFS文件系统中,执行下面命令开始运行作业

    bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar wordcount /input /output

      

      然后等待作业执行完毕,完毕之后可以使用命令bin/hdfs dfs -ls /output/查看是否生成结果文件,使用cat查看文件内容即可

    bin/hdfs dfs -cat /output/part-r-00000

      

      可以看到,结果正确的输出了,到这里基本的hadoop集群就部署完成了

     

      

  • 相关阅读:
    定时任务框架APScheduler学习详解
    Python list 和 str 互转
    python多个变量赋值
    python数据类型转换
    jquery datetimepicker 配置参数
    c#判断是否为合法的email地址
    SQL的四种连接-左外连接、右外连接、内连接、全连接
    SQL表连接查询(inner join、full join、left join、right join)
    简单的日期转换
    递归
  • 原文地址:https://www.cnblogs.com/freeweb/p/5157802.html
Copyright © 2011-2022 走看看