• hadoop-2.4.1集群搭建及zookeeper管理


    准备

    1.1修改主机名,设置IP与主机名的映射

    [root@xuegod74 ~]# vim /etc/hosts

    192.168.1.73 xuegod73

    192.168.1.74 xuegod74

    192.168.1.75 xuegod75

    192.168.1.76 xuegod76

    192.168.1.77 xuegod77

    192.168.1.78 xuegod78

    192.168.1.79 xuegod79

    192.168.1.80 xuegod80

    192.168.1.81 xuegod81

    1.2清空防火墙规则,设置防火墙开机自动关闭

    [root@xuegod74 ~]# iptables -F

    [root@xuegod74 ~]# service iptables stop

    [root@xuegod74 ~]# chkconfig iptables off

    [root@xuegod74 ~]# chkconfig iptables --list

    iptables 0:off 1:off 2:off 3:off 4:off 5:off 6:off

    1.3添加用户及用户组(这步是给普通用户执行的,本实验是root 用户下运行的,普通用户类似,只要用root赋予权限即可,没什么给什么···)

    [root@xuegod74 ~]# groupadd hadoop

    [root@xuegod74 ~]# useradd hadoop -g hadoop

    [root@xuegod74 ~]# echo 123456 | passwd --stdin hadoop

    1.4配置节点之间的ssh互信机制

    1.4.1生成密钥(前提是已经安装了openssh,如果没有安装的话要配置下yum源,执行yum install openssh openssh-* -y进行安装)

    [root@xuegod74 ~]# ssh-keygen #生成密钥

    [root@xuegod74 ~]# ssh-copy-id xuegod74 #依次执行(xuegod75,xuegod76,xuegod77,xuegod78,xuegod79,xuegod80)注意这步要包括本机

    2.1上传软件包

    [root@xuegod74 ~]# df -h

    Filesystem Size Used Avail Use% Mounted on

    /dev/sda3 18G 3.0G 14G 18% /

    tmpfs 931M 0 931M 0% /dev/shm

    /dev/sda1 194M 27M 158M 15% /boot

    /dev/sr0 4.2G 4.2G 0 100% /cdrom

    .host:/ 466G 302G 165G 65% /mnt/hgfs

    [root@xuegod74 ~]# cd /mnt/hgfs/E/hadoop/

    [root@xuegod74 hadoop]# ls

    e682b1eac9d0113cd9bb2c6dd4529d

    eclipse-SDK-4.2.2-linux-gtk-x86_64.tar.gz

    hadoop-0.20.0.tar.gz

    hadoop-1.2.1.tar.gz

    hadoop-2.4.1.tar.gz

    hadoop-2.5.2.tar.gz

    hadoop2.5.2安装.docx

    hadoop-2.6.1.tar.gz

    hadoop-2.7.1.tar.gz

    hadoop-2.7.1.txt

    hadoop2.7.1安装.docx

    hadoop安装.docx

    pig-0.7.0.tar.gz

    zookeeper-3.3.2.tar.gz

    clip_image002

    (也可以用ssh远程连接工具直接用rz上传)

    clip_image004

    [root@xuegod74 hadoop]# tar -xvf hadoop-2.4.1.tar.gz -C /usr/src/

    [root@xuegod74 Java]# cp jdk-8u66-linux-x64.rpm /usr/src/

    clip_image006

    [root@xuegod74 src]# rpm -ivh jdk-8u66-linux-x64.rpm

    2.2配置环境变量

    export JAVA_HOME=/usr/java/jdk1.8.0_66/

    export HADOOP_HOME=/usr/src/hadoop-2.4.1/

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

    ASE_HOME/bin:$PATH:$PIG_HOME/bin

    clip_image008

    2.3hadoop安装配置配置

    总共需要配置

    clip_image010

    2.3.1 hadoop-env.sh配置

    [root@xuegod74 hadoop]# vim hadoop-env.sh

    clip_image011

    2.3.2 hdfs-site.xml配置

    <configuration>

    <property>

    <name>dfs.nameservices</name>

    <value>ns1</value>

    </property>

    <!-- ns1下面有两个NameNode,分别是nn1,nn2 -->

    <property>

    <name>dfs.ha.namenodes.ns1</name>

    <value>nn1,nn2</value>

    </property>

    <!-- nn1的RPC通信地址 -->

    <value>xuegod74:9000</value>

    </property>

    <!-- nn1的http通信地址 -->

    <property>

    <name>dfs.namenode.http-address.ns1.nn1</name>

    <value>xuegod74:50070</value>

    </property>

    <!-- nn2的RPC通信地址 -->

    <property>

    <name>dfs.namenode.rpc-address.ns1.nn2</name>

    <value>xuegod75:9000</value>

    </property>

    <!-- nn2的http通信地址 -->

    <property>

    </property>

    <!-- 指定NameNode的元数据在JournalNode上的存放位置 -->

    <property>

    <name>dfs.namenode.shared.edits.dir</name>

    </property>

    <!-- 指定JournalNode在本地磁盘存放数据的位置 -->

    <property>

    <name>dfs.journalnode.edits.dir</name>

    <value>/home/hadoop/app/hadoop-2.4.1/journaldata</value>

    </property>

    <!-- 开启NameNode失败自动切换 -->

    <property>

    <name>dfs.ha.automatic-failover.enabled</name>

    <value>true</value>

    </property>

    <!-- 配置失败自动切换实现方式 -->

    <property>

    <name>dfs.client.failover.proxy.provider.ns1</name>

    <value>org.apache.hadoop.hdfs.server.namenode.ha.Configur

    edFailoverProxyProvider</value>

    </property>

    <!-- 配置隔离机制方法,多个机制用换行分割,即每个机制暂用一行-->

    <property>

    <name>dfs.ha.fencing.methods</name>

    <value>

    sshfence

    shell(/bin/true)

    </value>

    </property>

    <!-- 使用sshfence隔离机制时需要ssh免登陆 -->

    <property>

    <name>dfs.ha.fencing.ssh.private-key-files</name>

    <value>/root/.ssh/id_rsa</value>

    </property>

    <!-- 配置sshfence隔离机制超时时间 -->

    <property>

    <name>dfs.ha.fencing.ssh.connect-timeout</name>

    <value>30000</value>

    </property>

    </configuration>

    2.3.3 core-site.xml

    [root@xuegod74 hadoop]# vim core-site.xml

    <configuration>

    <!-- 指定hdfs的nameservice为ns1 -->

    <property>

    <name>fs.defaultFS</name>

    <value>hdfs://ns1</value>

    </property>

    <!-- 指定hadoop临时目录 -->

    <property>

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

    <value>/home/hadoop/app/hadoop-2.4.1/tmp</value>

    </property>

    <!-- 指定zookeeper地址 -->

    <property>

    <name>ha.zookeeper.quorum</name>

    <value>xuegod78:2181,xuegod79:2181,xuegod80:2181</value>

    </property>

    </configuration>

    2.3.4 mapred-site.xml

    [root@xuegod74 hadoop]# vim mapred-site.xml

    <!-- Put site-specific property overrides in this file. -->

    <configuration>

    <!-- 指定mr框架为yarn方式 -->

    <property>

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

    <value>yarn</value>

    </property>

    </configuration>

    2.3.5 yarn-site.xm

    [root@xuegod74 hadoop]# vim yarn-site.xml

    <!-- Site specific YARN configuration properties -->

    <!-- 开启RM高可用 -->

    <property>

    <name>yarn.resourcemanager.ha.enabled</name>

    <value>true</value>

    </property>

    <!-- 指定RM的cluster id -->

    <property>

    <name>yarn.resourcemanager.cluster-id</name>

    <value>yrc</value>

    </property>

    <!-- 指定RM的名字 -->

    <property>

    limitations under the License. See accompanying LICENSE file.

    -->

    <configuration>

    <!-- Site specific YARN configuration properties -->

    <!-- 开启RM高可用 -->

    <property>

    <name>yarn.resourcemanager.ha.enabled</name>

    <value>true</value>

    </property>

    <!-- 指定RM的cluster id -->

    <property>

    <name>yarn.resourcemanager.cluster-id</name>

    <value>yrc</value>

    </property>

    <!-- 指定RM的名字 -->

    <property>

    <name>yarn.resourcemanager.ha.rm-ids</name>

    <value>rm1,rm2</value>

    </property>

    <!-- 分别指定RM的地址 -->

    <property>

    <name>yarn.resourcemanager.hostname.rm1</name>

    <value>xuegod76</value>

    </property>

    <property>

    <name>yarn.resourcemanager.hostname.rm2</name>

    <value>xuegod77</value>

    </property>

    <!-- 指定zk集群地址 -->

    <property>

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

    <value>xuegod78:2181,xuegod79:2181,xuegod80:2181</value>

    </property>

    <property>

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

    <value>mapreduce_shuffle</value>

    </property>

    </configuration>

    2.4在xuegod77、xuegod79、xuegod80上面配置zookeeper

    上传zookeeper软件包方法同上

    clip_image013

    [root@xuegod78 src]# cd zookeeper-3.4.7/conf/

    [root@xuegod78 conf]# cdcp zoo_sample.cfg zoo.cfg

    [root@xuegod78 conf]# ls

    clip_image015

    2.4.1 配置zookeeper

    [root@xuegod78 conf]# vim zoo.cfg

    clip_image016

    clip_image017

    [root@xuegod78 ~]# mkdir -p /home/zookeeper-3.4.7/tmp

    [root@xuegod78 ~]# echo 1 > !$/myid

    [root@xuegod74 ~]# start-dfs.sh

    [root@xuegod78 ~]# cat !$

    clip_image018

    2.4.2 配置环境变量

    [root@xuegod78 ~]# vim /etc/profile

    export JAVA_HOME=/usr/src/jdk1.8.0_66/

    export JAVA_HOME=/usr/java/jdk1.8.0_66/

    export HADOOP_HOME=/usr/src/hadoop-2.4.1/

    export ZOOKEEPER_HOME=/usr/src/zookeeper-3.4.7/

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

    TH:$ZOOKEEPER_HOME/bin

    是配置文件生效

    [root@xuegod78 ~]# source !$

    2.4.3验证配置是否成功

    [root@xuegod78 ~]# zkServer.sh status #这里已经启动所以会有以下信息,如果是配置成功的话直接zkS键入之后按下Tab键就可以自动补全,证明zookeeper安装配置成功。

    ZooKeeper JMX enabled by default

    Using config: /usr/src/zookeeper-3.4.7/bin/../conf/zoo.cfg

    Mode: follower

    2.4.4 将配置好的zookeeper拷贝到xuegod79和xuegod80上面

    [root@xuegod78 ~]# scp -r /usr/src/zookeeper-3.4.7/ xuegod79:/usr/src/

    [root@xuegod78 ~]# scp -r /usr/src/zookeeper-3.4.7/ xuegod80:/usr/src/

    同样分别在xuegod79和xuegod80上面创建mkdir /home/zookeeper-3.4.7/tmp/

    echo 2 > /home/zookeeper-3.4.7/tmp/myid #xuegod79上面

    echo 3 > /home/zookeeper-3.4.7/tmp/myid #xuegod80上面

    3.1在xuegod74上面讲配置好的文件拷贝到其他节点

    [root@xuegod74 hadoop]# scp -r /usr/src/hadoop-2.4.1/ xuegod75:/usr/src/

    [root@xuegod74 hadoop]# scp /etc/profile xuegod75:/etc/

    以上操作要一次拷贝到xuegod76 xuegod77 xuegod78 xuegod79 xuegod80上面。

    4.启动集群

    4.1首先分别在xuegod78,xuegod79和xuegod80上面启动zookeeper

    4.1.1启动zookeeper

    [root@xuegod78 ~]# zkServer.sh start #要分别在xuegod79 xuegod80上面执行

    ZooKeeper JMX enabled by default

    Using config: /usr/src/zookeeper-3.4.7/bin/../conf/zoo.cfg

    Starting zookeeper ... STARTED

    4.1.2启动journalnode(分别在在xuegod78 xuegod79 xuegod80上执行)

    [root@xuegod78 ~]# hadoop-daemon.sh start journalnode

    4.1.3格式化HDFS,在xuegod74上面

    [root@xuegod74 hadoop]# hdfs namenode -format

    #格式化后会在根据core-site.xml中的hadoop.tmp.dir配置生成个文件,这里我配置

    的是/home/hadoop/app/hadoop-2.4.1/tmp,然后将/home/hadoop/app/hadoop-2.4.1/tmp拷贝到xuegod75的/home/hadoop/app/hadoop-2.4.1/tmp下.

    [root@xuegod74 ~]#scp -r /home/hadoop/app/hadoop-2.4.1/tmp/ xuegod75:/home/hadoop/app/hadoop-2.4.1/

    clip_image020

    建议是使用hdfs namenode -bootstrapStandby来格式化

    4.1.4格式化ZKFC(在xuegod74上)

    [root@xuegod74 ~]# hdfs zkfc -format

    4.2 启动HDFS(在xuegod74上)

    [root@xuegod74 ~]# start-dfs.sh

    4.3 启动启动YARN(在xuegod75上)

    [root@xuegod75 ~]# start-yarn.sh

    5查看

    clip_image021

    clip_image023

    clip_image024

    clip_image026

    clip_image028

    6关闭集群

    [root@xuegod74 ~]# stop-all.sh

    [root@xuegod74 ~]# ssh xuegod78 #手动关闭xuegod79 xuegod80上的zookeeper

    [root@xuegod78 ~]# zkServer.sh stop

    注:若有错误请诸君指正,谢谢~

  • 相关阅读:
    Windows Phone 应用程序的全球化 狼人:
    幽默:编程语言 / 操作系统
    幽默:编程语言 / 操作系统
    程序员的幽默
    游戏杆编程心得二:如何判断按钮的有效按下
    DirectX 7.0 SDK在VC 6.0环境中使用的注意事项
    游戏杆编程心得
    HTML 5 WebSocket 示例
    HTML 5 WebSocket 示例
    慎用VC 6.0
  • 原文地址:https://www.cnblogs.com/zd520pyx1314/p/6534115.html
Copyright © 2020-2023  润新知