zoukankan      html  css  js  c++  java
  • HADOOP集群搭建

    • 集群简介

    HADOOP集群具体来说包含两个集群:HDFS集群和YARN集群,两者逻辑上分离,但物理上常在一起(也就是说需要分别部署HDFS集群和YARN集群,但是这两个集群在一个机器上部署)

    HDFS集群:

    负责海量数据的存储,集群中的角色主要有 NameNode / DataNode

    YARN集群:

    负责海量数据运算时的资源调度,集群中的角色主要有 ResourceManager /NodeManager

    (那mapreduce是什么呢?它其实是一个应用程序开发包)

     

    • 服务器准备

    本案例使用虚拟机服务器来搭建HADOOP集群,所用软件及版本:

    Vmware 11.0

    Centos  6.5  64bit

    • 网络环境准备

    采用NAT方式联网

    网关地址:192.168.33.1

    3个服务器节点IP地址:192.168.33.130、192.168.33.131、192.168.33.132、192.168.23.133

    子网掩码:255.255.255.0

    • 服务器系统设置

    添加HADOOP用户

    为HADOOP用户分配sudoer权限

    同步时间

    设置主机名

    mini1、mini2、mini3、mini4

    • 配置内网域名映射:/etc/hosts

    192.168.33.130          mini1

    192.168.33.131          mini2

    192.168.33.132          mini3

    192.168.33.133          mini4

    • 配置ssh免密登陆
    • 关闭防火墙

    service iptables stop

    chkconfi iptables off

    • HADOOP安装部署

    注意:hadoop的安装文件我们需要从官网下载源码文件到linux进行编译,因为官网编译的版本不一定适合我们现在的环境,所以需要重新编译源码。【源码编译步骤比较多,可以参考一下一篇好的博文,我这里就不班门弄斧了】

    源码编译参考https://www.cnblogs.com/duking1991/p/6104304.html

    • 上传HADOOP安装包

    • 规划安装目录  /home/hadoop/apps/hadoop-2.6.1
    • 解压安装包

    tar -zxvf cenos-6.5-hadoop-2.6.4.tar.gz -C apps/

    • 修改配置文件 
    • 最简化配置如下:

    解压缩之后,进入到/home/hadoop/apps/hadoop-2.6.4/etc/hadoop目录

    这个目录下有很多配置文件,但是不需要每一个配置文件都需要去配置

    配置hadoop-env.sh即可(只需要在这个配置文件中加入java的路径即可)

    拿到当前机器的JAVA_HOME的路径

    /usr/local/jdk7/jdk1.7.0_80

    因为到时候启动的时候是通过一台机器ssh远程到其他机器上启动hadoop的,所以这个环境变量就不生效,需要我们首先配置好

    vi  hadoop-env.sh

    # The java implementation to use.
    export JAVA_HOME=/usr/local/jdk7/jdk1.7.0_80
    

     

    如下四个配置文件是配置hadoop运行时的配置文件

    核心配置文件core-site.xml

    跟hdfs有关hdfs-site.xml

    跟mapreduce有关mapred-site.xml.template    -- 需要重命名为mapred-site.xml配置才能生效([hadoop@localhost hadoop]$ mv mapred-site.xml.template mapred-site.xml)

    跟yran有关yarn-site.xml

     

    其实这四个配置文件配置在哪一个配置文件里面都是可以的,但是为了方便管理分开配置;

    公共配置在core-site.xml

    <configuration>
    <property>
    <name>fs.defaultFS</name>
    <value>hdfs://192.168.23.130:9000</value>
    </property>
    <property>
    <name>hadoop.tmp.dir</name>
    <value>/home/HADOOP/apps/hadoop-2.6.1/tmp</value>
    </property>
    </configuration>
    

    vi  hdfs-site.xml   -- hdfs-site.xml有默认配置,我们可以不用配置,这里就简单配置一下

    <configuration>
    <property>
    <name>dfs.namenode.name.dir</name>
    <value>/home/hadoop/data/name</value>
    </property>
    <property>
    <name>dfs.datanode.data.dir</name>
    <value>/home/hadoop/data/data</value>
    </property>
    
    <property>
    <name>dfs.replication</name>
    <value>2</value>
    </property>
    
    <property>
    <name>dfs.secondary.http.address</name>
    <value>192.168.23.130:50090</value>
    </property>
    </configuration>
    

    vi  mapred-site.xml   -- 这样配置之后,mapreduce就会交给yarn去跑,分布式的方式去跑。默认是local,在本地跑,不是分布式去跑。

    <configuration>
    <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
    </property>
    </configuration>
    

    vi  yarn-site.xml

    <configuration>
    <property>
    <name>yarn.resourcemanager.hostname</name>
    <value>192.168.23.130</value>
    </property>
    
    <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
    </property>
    </configuration>
    

    在mini1配置好上述的配置文件后,把整个解压后的hadoop安装到mini2,mini3,mini4

       scp -r apps/ 192.168.23.131:/home/hadoop/

       scp -r apps/ 192.168.23.132:/home/hadoop/

       scp -r apps/ 192.168.23.133:/home/hadoop/

    配置hadoop的环境变量  -- 配置之后就可以在机器的其他地方敲hadoop的命令

    vim /etc/profile  -- 要root用户操作

    export HADOOP_HOME=/home/hadoop/apps/hadoop-2.6.4

    export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

    在mini1机器上配置好之后,把/etc/profile配置文件分发到mini2,mini3,mini4

    scp /etc/profile 192.168.23.131:/etc/

     scp /etc/profile 192.168.23.132:/etc/

     scp /etc/profile 192.168.23.133:/etc/

     

    配置好之后还不能立即启动集群,还需要格式化namenode。

    Hadoop namenode -format

    这个路径是我们刚刚配置的初始化的路径

    如果我们要启动namenode只能在mini1机器上,因为我们在配置文件上写死了mini1为namenode,下图就是启动namenode的命令

    首先cd到/home/hadoop/apps/hadoop-2.6.4/sbin下(如果配置好了hadoop的环境变量就可以在任意一个目录执行)

    hadoop-daemon.sh start namenode

    启动了namenode之后,可以通过jps命令查看

    访问页面http://192.168.23.130:50070

    因为是只启动的namenode,并没有启动datanode,所以文件系统的大小为0B

    启动一个datanode节点,比如启动192.168.23.131

    hadoop-daemon.sh start datanode

    看容量已经扩大。那么问题来了,为什么我启动一台机器namenode就知道呢?因为我们刚才的配置文件是完全一样的,所以当他们启动的时候就知道namenode在哪里,所以namenode就知道容量变化了。

    vi  salves      #配置集群的ip或者主机别名(注意是配置别名的时候要先在本地配置好/etc/hosts)

    mini1
    
    mini2
    
    mini3
    
    mini4

     

    • 启动集群

    方式一:手工一个机器一个机器去启动

    hadoop-daemon.sh start namenode  #启动namenode

    hadoop-daemon.sh start datanode   #启动datanode

    yarn-daemon.sh start resourcemanager  #启动resourcemanager

    yarn-daemon.sh start nodemanager     #启动nodemanager

    方式二:通过脚本启动所有机器的dfs和yarn

    前提:(1)需要配置从master到slave的ssh免密登录  (2)需要配置好/home/hadoop/apps/hadoop-2.6.4/etc/hadoop下的slaves配置文件,配置好所有的机器的别名

    启动HDFS

    sbin/start-dfs.sh

    启动YARN

    sbin/start-yarn.sh

    • 测试

    上传文件到HDFS

    首先在hdfs上创建目录

    [HADOOP@hdp-node-01 ~]$hadoop fs -mkdir -p /wordcount/input
    [HADOOP@hdp-node-01 ~]$hadoop fs -put /home/hadoop/test20190226/20190226.txt /wordcount/input
    

     

    从本地上传一个文件到hdfs

    上传文件之后,启动一个hadoop客户端来查看文件系统中的文件

    在管理平台上(http://192.168.23.130:50070)也可以看到已经上传的文件

    hadoop fs 表示启动hadoop的文件系统, -ls / 表示查看的是hadoop的文件系统的根目录,而不是linux机器的根目录

    • 运行一个mapreduce程序

    在HADOOP安装目录下,运行一个示例mr程序

     

    首先需要创建目录/wordcount/input

    命令如下:

    [hadoop@mini1 mapreduce]$ hadoop fs -mkdir -p /wordcount/input

    创建一个文件test.txt,内容this is a test mapreduce programming!

    并上传到/wordcount/input

    为了方便查看统计效果,指保留我们刚刚创建的一个文件,之前上传到这里的文件先删除

    进入到cd /home/hadoop/apps/hadoop-2.6.4/share/hadoop/mapreduce

    执行命令:

    hadoop jar mapredcue-example-2.6.1.jar wordcount /wordcount/input  /wordcount/output 

    进入到mapreduce目录,看到下面有很多的jar包,这些jar都是一些例子,我们现在启动一个hadoop-mapreduce-examples-2.6.4.jar这个例子,命令: hadoop jar hadoop-mapreduce-examples-2.6.4.jar wordcount  /wordcount/input  /wordcount/output

  • 相关阅读:
    天眼查接口的调用
    EditPlus5.0注册码
    图片转化成base64字符串
    java根据图片的url地址下载图片到本地
    将字符串中的数字转化为文字
    String类型转json 转JSONObject 转 JSONArray 以及 遍历
    三个日期类型比较大小 20181123
    字符与字节的区别
    面向对象五大原则
    Struts/Servlet,action转到jsp后,CSS失效,路径问题(struts2,jsp路径,action路径,action跳转,相对路径,绝对路径)
  • 原文地址:https://www.cnblogs.com/chunguang-yao/p/10666399.html
Copyright © 2011-2022 走看看