zoukankan      html  css  js  c++  java
  • hadoop集群搭建(完全分布式)

    1 hadoop集群概要

    1.1 hadoop优点

    1>高可靠性。Hadoop按位存储和处理数据的能力值得人们信赖。

    2> 高扩展性。Hadoop是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以千计的节点中。

    3> 高效性。Hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度非常快。

    4> 高容错性。Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配。

    5> 低成本。与一体机、商用数据仓库以及QlikView、Yonghong Z-Suite等数据集市相比,hadoop是开源的,项目的软件成本因此会大大降低。

    1.2 hadoop架构

         

    1.3 名词解释

    NameNode: NameNode 在一个称为 FsImage 的文件中存储所有关于文件系统名称空间 的信息。这个文件和一个包含所有事务的记录文件(这里是 EditLog)将存储在 NameNode 的本地文件系统上。FsImage 和 EditLog 文件也需要复制副本,以防文件损坏或 NameNode 系统丢失。NameNode 存储的是数据的数据即元数据。

    DataNode:进行数据的存储。

    SecondNameNode:对NameNode上的fdimage和edits信息进行和平保存,减轻NameNode的压力

    1.4 hadoop的高可用性

    hadoop集群在运行的过程中,DataNode会周期性的向NameNode发送两种信号,一个是心跳信号,一个是块状态报告或块状态列表。如果NameNode在一段时间内无法收到心跳信号,那么NameNode就会认为这个DataNode已经宕机,然后将保存在DataNode上的块进行重新复制,块状态报告是为了防止数据有丢失的情况,以为了及时的进行数据的备份。

    2.hadoop集群搭建软件

    2.1 版本选择

           hadoop-1.2.1.tar.gz

           hive-0.11.0.tar.gz

                hbase-0.94.18.tar.gz

           zookeeper-3.4.5.tar.gz

           jdk-7u51-linux-x64.gz

    2.2系统选择

           centos 6.3

    3.搭建准备

    主机名

    IP地址

    角色

    用户名

    test.master

    192.168.21.102

    NameNode/job Tracker

    hadoop/hadoop

    test.slave1

    192.168.21.109

    DataNode

    hadoop/hadoop

    4.搭建过程

    4.1 软件下载

    [root@test ~]#mkdir /apps

    [root@test ~]#cd apps

    [root@test apps]#wget  http://mirrors.cnnic.cn/apache/hadoop/common/hadoop-1.2.1/hadoop-1.2.1.tar.gz

    [root@test apps]#wget  http://mirrors.cnnic.cn/apache/hive/hive-0.11.0/hive-0.11.0.tar.gz

    [root@test apps]#wget  http://mirrors.cnnic.cn/apache/hbase/hbase-0.94.18/hbase-0.94.18.tar.gz

    [root@test apps]#wget  http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.5/zookeeper-3.4.5.tar.gz

    4.2 安装检查

    4.2.1 关闭防火墙

    /etc/init.d/iptables status   查看防火墙状态

    /etc/init.d/iptables stop     关闭防火墙

    /etc/init.d/iptables status    确认

    4.2.1.1 修改主机名

    vi /etc/sysconfig/network

    HOSTNAME= test.master

    保存

    source /etc/sysconfig/network 立即生效

    主节点和数据节点都需要修改即102和109都需要更改。

    4.1.1.2 绑定ip与主机名

    执行vi /etc/hosts,增加一行记录192.168.1.102  test.master

    备注:在所有的节点上都需要做这个操作。将IP和主机名如上对应。

    4.2.3 设置ssh免密码登录

                       (1)生成密钥文件,执行命令ssh-keygen -t rsa,三次回车

                                                   生成授权文件cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys

                        (2)验证 ssh localhost不需要输入密码表明成功

                                输入 who 可以查看有谁登陆了

                               ******记得退出******

                       (3) 确保各个节点之间ssh免密码登录

                                         在102上执行:ssh-copy-id -i ~/.ssh/id_rsa.pub test.slave1

                                                   输入test.slave1主机的登录密码

    在test.slave1主机上 cat authorized_keys查看内容(多了test.master的ssh密码)

    在109上执行:ssh-copy-id -i ~/.ssh/id_rsa.pub test.master

                                                   输入test.master主机的登录密码

    在test.master主机上 cat authorized_keys查看内容(多了test.slave1的ssh密码)

    验证:互相登录对方机器,touch /usr/local/test.txt查看是否存在。

    使用什么账户生成的授权文件,只有使用相同的账户登录的时候,才可以面密码登录。

    4.2.4 安装JDK

    [root@test apps]#tar –zxvpf jdk-7u51-linux-x64.gz

    [root@test apps]#vim /etc/profile

    保存:wq

    查看修改是否成功 more /etc/profile

    立即生效,执行source /etc/profile

    验证,执行java –version

    4.2.5 安装hadoop

    [root@test apps]#tar –zxvpf  hadoop-1.2.1.tar.gz

    [root@test apps]# ar –zxvpf  hive-011.0.tar.gz

    [root@test apps]# ar –zxvpf  hbase-0.94.18.tar.gz

    [root@test apps]# ar –zxvpf  zookeeper-3.4.5.tar.gz

    [root@test apps]#cd hadoop-1.2.1/conf

    需要编辑以下几个文件:

    hadoop-env.sh/

    hdfs-site.xml/

    core-site.xml/

    mapred-site.xml/

    master/

    slaves

     

    [root@test apps]#vim /hadoop-1.2.1/conf/hadoop-env.sh

    添加JAVA_HOME路径

     

     

    [root@test apps]#vim /hadoop-1.2.1/conf/hdfs-site.xml

    [root@test apps]#vim /hadoop-1.2.1/conf/core-site.xml

    [root@test apps]#vim hadoop-1.2.1/conf/mapre-site.xml

    4.2.6复制hadoop、jdk到新的节点(从未安装jdk、hadoop如:192.168.21.109)上

    [root@test apps]# scp -r /apps/hadoop-1.2.1       test.slave1:/apps/

    [root@test apps]# scp -r /apps/jdk1.7.0_51          test.slave1:/apps/

    [root@test apps]# scp -r /apps/hive-0.11.0         test.slave1:/apps/

    4.2.7在主节点上的/apps/hadoop-1.2.1/conf里修改文件(指定那些机器是主,哪些机器是从)

                                         执行vi masters,删除原内容,添加test.master,保存退出

                                         执行vi slaves, 删除原内容,添加test.slave1,保存退出

             1>删除各节点hadoop目录下的tmp文件夹和logs日志文件()

             2>只在主节点,执行hadoop namenode -format(格式化hadoop文件系统)

           1>>如果格式化过程中出现hadoop:commond not found则需要在/etc/profile下添加,并同时更新DataNode下的/etc/profile文件,确保NameNode和DataNode上的/etc/profile文件一致。

             

             3>只在主节点,执行start-all.sh

    4.2.8 启动的问题

    1>主节点出现无法启动成功

    查看屏幕,一般给出了解决方案。

    如上图:配置文件出现了错误:

    1>>  查找相应的配置文件,并将其改成

    2>>  source /配置文件,立即上校,或者是重启电脑

    3>>  jps查看进程是否还存在如存在,执行stop-all.sh

    4>>  start-all.sh

    5>> 执行jps,看不到Namenode进程

                         可能原因:忘记执行格式化

                                             配置文件出错

                                                 没有绑定主机名

    2>主节点启动成功。则执行如下操作检验:

                  1>> jps

                        

                       NsmeNode和JobTracker是必须的,如不存在,重新检查hadoop配置。

                       SecondaryNameNode一般可以配置在和NameNode不在一个机架上的节点。

                  2>>ssh test.slave1测试DataNode节点是否正常启动。

                        

                       如过执行命令是这样显示,则是正确的,如果要求输入test.slave1的密码,则说明ssh的配置是不正确的,不能实现NameNode和DataNode的免密码登录。重新回到 4.2.3(设置ssh免密码登录)

                  3>>jps

                      

                       出现如上说明DataNode配置也是正确的。

    问题解决:

    如果执行start-all.sh之后

    如图显示,表示没有启动报错,但不代表集群是正确的

    1>>在NameNode和DataNode上执行命令jps,如DataNode无进程。

    2>>vim /apps/hadoop-1.2.1/logs/hadoop-root-datanode-test.slave1.log查看无法启动的原因。

    4.2.9 DataNode无法启动的原因

         1.防火墙一定要关闭

              /etc/init.d/iptables ststus

              /etc/init.d/iptables stop

         2.hdfs-site.xml

              哪个节点没有启动成功,查看哪个节点下的hdfs-site.xml配置文件有没有写错。

         3. 主从节点使用的JDK版本必须一致。

         4. hadoop/hdfs/data/current/VERSION中的namespaceID必须一致

         5. hadoop下的/hdfs/data文件(dfs.name.dir或dfs.data.dir)权限必须是drwxr-xr-x.  chmod -R 755 hdfs/

         6. 删除logs和tmp文件夹后格式化hadoop namenode -format,从新启动。

    4.2.10 hadoop集群的优化和操作

    1.取消hadoop执行命令时的警告

                       执行vi /etc/profile,增加一行export HADOOP_HOME_WARN_SUPPRESS=0

                       保存退出,执行source /etc/profile

    2.常用的hdfs命令

                       hadoop fs          -ls     hdfs的绝对路径                                         #####查看一级目录

                                         -lsr   hdfs的绝对路径                                          #####递归查看

                                         -mkdir       hdfs的绝对路径                                          #####创建文件夹

                                         -put  第一个表示linux原路径        第二个表示hdfs路径    #####上传

                                         -get  第一个表示hdfs路径    第二个表示linux路径   #####下载

                                         -rmr hdfs的绝对路径                                          #####递归删除

                                         -text          hdfs的绝对路径                                          #####查看文本内容

    (hadoop fs -lsr / 中的“/”其实就是hadoop分布式文件系统的更目录。

    也可以写作:hadoop fs -lsr hdfs://hadoop01:9000/

                       查看hadoop01主机的根目录中信息,也可以查看其他的hadoop主机的目录)   

    ********************HDFS的路径不等于Linux的路径******************************

  • 相关阅读:
    Centos7安装teamviewer 32/64位
    Centos7安装32位库用来安装32位软件程序
    linux环境下配置mysql双主复制
    zabbix自定义触发器进行监控
    VM安装系统时提示硬件不支持(unsupported hardware detected)
    mysql新建用户在本地无法登录
    msyql开启慢查询以及分析慢查询
    zabbix怎么把英文界面换成中文
    xencenter如何安装系统
    mysql优化查询
  • 原文地址:https://www.cnblogs.com/yongxingg/p/3658666.html
Copyright © 2011-2022 走看看