阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Hadoop2.7.1 HA集群部署

444次阅读
没有评论

共计 23682 个字符,预计需要花费 60 分钟才能阅读完成。

1. 修改文件 /etc/hostname 里的值即可,修改成功后用 hostname 命令查看当前主机名是否设置成功。

[root@masternode CentOS]# cat /etc/hosts

#127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

#::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

10.10.10.3 slavenode1.novalocal slavenode1

10.10.10.4 masternode.novalocal masternode

10.10.10.5 slavenode2.novalocal slavenode2

10.10.10.6 slavenode3.novalocal slavenode3

 

修改 hostname

vi /etc/sysconfig/network

Hostname=masternode1

 

3. 在主节点机器上设置 ssh 免密码登陆

1) 首先在主机器上核对 ssh 是否安装

[root@masternode ~]# rpm -qa |grep ssh 

libssh2-1.4.2-1.el6.x86_64

openssh-5.3p1-104.el6_6.1.x86_64

openssh-server-5.3p1-104.el6_6.1.x86_64

openssh-clients-5.3p1-104.el6_6.1.x86_64

2) 生产密钥 

[root@masternode ~]# cd .ssh/

[root@masternode .ssh]# ls

authorized_keys

[root@masternode .ssh]# cd /

[root@masternode /]# ssh-keygen -t rsa

Generating public/private rsa key pair.

Enter file in which to save the key (/opt/.ssh/id_rsa): 

Enter passphrase (empty for no passphrase): 

Enter same passphrase again: 

Your identification has been saved in /opt/.ssh/id_rsa.

Your public key has been saved in /opt/.ssh/id_rsa.pub.

The key fingerprint is:

e8:3d:75:11:0b:6a:a9:f5:39:e5:04:71:2e:94:21:94 root@masternode.novalocal

The key’s randomart image is:

+–[RSA 2048]—-+

|       .o.*+o    |

|        E=.= o   |

|        = . *    |

|       = . * .   |

|      o S = o    |

|     . . . o     |

|      . o        |

|         .       |

|                 |

+—————–+

[root@masternode /]# cd 

[root@masternode ~]# cd .ssh/

[root@masternode .ssh]# ls

authorized_keys  id_rsa  id_rsa.pub 生产的密钥

[root@masternode .ssh]# cat id_rsa.pub >> authorized_keys

3)把密钥传输到其他节点机器上 

(1)用 ssh-copy-id 命令将公钥传送到远程主机上(这里以 Slave1node3 为例)。

[root@masternode ~]# ssh-copy-id root@slavenode3

(2)如果在用命令 ssh-copy-id 时发现找不到该命令“ssh-copy-id:Command not found”,则可能是 ssh 服务的版本太低的原因,比如若你的机器是 RedHat 系统就可能该问题,解决办法是:手动复制本地的 pubkey 内容到远程服务器,命令如下:

 cat ~/.ssh/id_rsa.pub | ssh root@slavenode3 ‘cat >> ~/.ssh/authorized_keys’

该命令等价于下面两个命令:

①在本地机器上执行:scp ~/.ssh/id_rsa.pub root@slavenode3:/~

②到远程机器上执行:cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

[root@masternode .ssh]# scp authorized_keys root@125.208.30.89:/opt/.ssh

The authenticity of host ‘125.208.30.89(125.208.30.89)’ can’t be established.

RSA key fingerprint is e3:97:c0:29:e4:fa:0d:41:31:6e:df:fe:0c:6b:c7:08.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added ‘125.208.30.89’ (RSA) to the list of known hosts.

Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

lost connection

 

[root@masternode .ssh]# vi authorized_keys 

cat id_rsa.pub >> authorized_keysd_rsa.pub 

[root@masternode .ssh]# scp .ssh/authorized_keys root@mslavenode1:~/.ssh/

[root@masternode .ssh]# scp .ssh/authorized_keys root@slavenode2:~/.ssh/

[root@masternode .ssh]# scp .ssh/authorized_keys root@slavenode3:~/.ssh/

 

 

4. 把主机 hosts 拷贝到其他从机器上

[root@masternode centos]# scp /etc/hosts root@10.10.10.5:/etc/hosts

hosts                                                                                          100%  332     0.3KB/s   00:00   

[root@masternode centos]# scp /etc/hosts root@10.10.10.3:/etc/hosts

hosts                                                                                          100%  332     0.3KB/s   00:00   

[root@masternode centos]# scp /etc/hosts root@10.10.10.6:/etc/hosts

5. 安装 java 软件

1)解压 java 软件包

   cd /usr/java/

tar -xvf jdk-7u79-linux-x64.tar.gz 

chown -R Hadoop:hadoop jdk-7u79

2)编辑环境变量

编辑 ”/etc/profile” 文件,在后面添加 Java 的 ”JAVA_HOME”、”CLASSPATH” 以及 ”PATH” 内容如下:

 vi /etc/profile

export JAVA_HOME=/usr/java/jdk1.7.0_79

export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

#export JAVA_LIBRARY_PATH=’/opt/hadoop/hadoop-2.7.2/lib/native’ 

export PATH=$PATH:$JAVA_HOME/bin

 

#set hadoop path

export HADOOP_HOME=/opt/hadoop/hadoop-2.7.2

#export  HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native

#export  HADOOP_OPTS=”-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_COMMON_LIB_NATIVE_DIR”

export PATH=$PATH:$HADOOP_HOME/bin

#set hive

export HIVE_HOME=/opt/hadoop/hive-2.0.0

export PATH=$PATH:$HIVE_HOME/bin

#set zookeeper

export ZOOKEEPER_HOME=/opt/hadoop/zookeeper

export PATH=$PATH:$ZOOKEEPER_HOME/bin:$ZOOKEEPER_HOME/conf

#set hbase

export HBASE_HOME=/opt/hadoop/hbase-1.1.5

export PATH=$PATH:$HBASE_HOME/bin

#set scala

export SCALA_HOME=/opt/hadoop/scala

export PATH=$PATH:$SCALA_HOME/bin

#set spark

export SPARK_HOME=/opt/hadoop/spark

export PATH=$PATH:$SPARK_HOME/bin

3)使配置生效

保存并退出,执行下面命令使其配置立即生效。

source /etc/profile 或 . /etc/profile

vi ~/.bash_profile 

export JAVA_HOME=/usr/java/jdk1.7.0_79/

export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export PATH=$PATH:$JAVA_HOME/bin

#set hadoop path

export HADOOP_HOME=/opt/hadoop/hadoop-2.7.2

export PATH=$PATH:$HADOOP_HOME/bin

Source ~/.bash_profile

4)验证安装成功

配置完毕并生效后,用下面命令判断是否成功。

[root@masternode java]# java -version

java version “1.7.0_79”

Java(TM) SE Runtime Environment (build 1.7.0_79-b15)

Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)

5)安装剩余机器 java

通过 scp 命令格式把 ”/usr/java/” 文件复制到其他 Slave 上面,剩下的事儿就是在其余的 Slave 服务器上按照上面步骤配置环境变量和测试是否安装成功,这里以 Slavenode2 为例:

[root@masternode java]# scp -r jdk1.7.0_79/ root@10.10.10.3:/usr/java/

[root@masternode java]# scp -r jdk1.7.0_79/ root@10.10.10.5:/usr/java/

[root@masternode java]# scp -r jdk1.7.0_79/ root@10.10.10.6:/usr/java/

此时不可以选择较低版本的 JDK 进行安装 因为 所有集群中的 JDK 版本必须相同

 

Hadoop 集群之 zookeeper 安装配置 -hbase 安装就不用安装这个模块

1.下���地址:

http://mirror.bjtu.edu.cn/apache/zookeeper/zookeeper-3.4.8/zookeeper-3.4.8.tar.gz
2.zookeepe 安装

① 上传软件并解压

把 zookeeper-3.4.8.tar.gz 文件存放在 /opt/hadoop 目录下,进行解压:

[root@masternode hadoop]# tar -zxvf zookeeper-3.4.8.tar.gz 

mv   zookeeper-3.4.8 zookeeper

— 要是单独有自己的用户名则执行下面命令

hadoop@Ubuntu:~$ sudo tar -zxvf zookeeper-3.4.8.tar.gz 

hadoop@ubuntu:~$ chown -R hadoop:hadoop zookeeper-3.4.8 

mv   zookeeper-3.4.8 zookeeper

② 设置环境变量 vi /etc/profile

#set zookeeper

export ZOOKEEPER_HOME=/opt/hadoop/zookeeper

export PATH=$PATH:$ZOOKEEPER_HOME/bin

Vi ~/.bash_profile 

#set zookeeper

export ZOOKEEPER_HOME=/opt/hadoop/zookeeper

export PATH=$PATH:$ZOOKEEPER_HOME/bin

[root@masternode hadoop]# source /etc/profile

[root@masternode hadoop]# cd zookeeper/conf/

[root@masternode conf]# pwd

/opt/hadoop/zookeeper/conf

③ 配置 zoo.cfg 文件

 配置文件存放在 $ZOOKEEPER_HOME/conf/ 目录下,将 zoo_sample.cfd 文件名称改为 zoo.cfg,  缺省的配置内容如下:

[root@masternode conf]# mv zoo_sample.cfg zoo.cfg

vi zoo.cfg

clientPort=2181

dataDir=/opt/hadoop/zookeeper/data/

dataLogDir=/opt/hadoop/zookeeper/log/

server.1=slavenode1:2888:3888

server.2=masternode:2888:3888

server.3=slavenode2:2888:3888

server.4=slavenode3:2888:3888

配置说明:
tickTime:这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。
dataDir:顾名思义就是 Zookeeper 保存数据的目录,默认情况下,Zookeeper 将写数据的日志文件也保存在这个目录里。
clientPort:这个端口就是客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。

④ 新建两个目录

 mkdir /opt/hadoop/zookeeper/data/

 mkdir /opt/hadoop/zookeeper/log/

在 /opt/hadoop/zookeeper/data/ 目录下创建一个文件:myid

touch /opt/hadoop/zookeeper/data/myid

[root@masternode data]# echo‘1’> myid 

1

⑤ 将 zookeeper 目录 和环境变量设置文件拷贝到其他机器上

[root@masternode hadoop]# scp -r zookeeper root@slavenode1:/opt/hadoop/

[root@masternode hadoop]# scp -r zookeeper root@slavenode3:/opt/hadoop/

[root@masternode hadoop]# scp -r zookeeper root@slavenode2:/opt/hadoop/

 

[root@masternode conf]# scp ~/.bash_profile root@slavenode2:~/.bash_profile 

[root@masternode conf]# scp ~/.bash_profile root@slavenode3:~/.bash_profile 

[root@masternode conf]# scp ~/.bash_profile root@slavenode1:~/.bash_profile 

⑥ 修改其他机器该文件

[root@masternode centos]# cat /opt/hadoop/zookeeper/data/myid 

2

[root@slavenode3 centos]# cat /opt/hadoop/zookeeper/data/myid 

4

[root@slavenode3 centos]# cat /opt/hadoop/zookeeper/data/myid 

3

⑦ 启动 zookeeper (所配的机器都要启动)

cd /opt/hadoop/zookeeper/bin

./zkServer.sh start

⑧ 验证

[root@masternode zookeeper]# jps

16159 HQuorumPeer

14438 DataNode

16397 Jps

14549 NodeManager

 

查看状态

[root@slavenode3 centos]# /opt/hadoop/zookeeper/bin/zkServer.sh status

ZooKeeper JMX enabled by default

Using config: /opt/hadoop/zookeeper/bin/../conf/zoo.cfg

Mode: leader

客户端链接 zookeeper

[root@slavenode3 centos]# /opt/hadoop/zookeeper/bin/zkCli.sh -server slavenode3:2181

WATCHER::

 

WatchedEvent state:SyncConnected type:None path:null

[zk: slavenode3:2181(CONNECTED) 0] ls /

[hbase, zookeeper]

[zk: slavenode3:2181(CONNECTED) 1] ls /hbase

[meta-region-server, backup-masters, region-in-transition, table, draining, table-lock, running, master, namespace, hbaseid, online-snapshot, replication, splitWAL, recovering-regions, rs, flush-table-proc]

 

安装 hadoop

1. 安装 hadoop 软件包

① 解压 hadoop 软件包

Cd /opt/hadoop/

 tar -xvf hadoop-2.7.2.tar.gz 

[root@masternode hadoop]# ls

hadoop-2.7.2         jdk1.7.0_79                lost+found

hadoop-2.7.2.tar.gz  jdk-7u79-linux-x64.tar.gz

[root@masternode hadoop]# cd hadoop-2.7.2

[root@masternode hadoop-2.7.2]# ls

bin  include  libexec      NOTICE.txt  sbin

etc  lib      LICENSE.txt  README.txt  share

② 设置环境变量

并把 Hadoop 的安装路径添加到 ”/etc/profile“ 中,修改 ”/etc/profile” 文件,将以下语句添加到 末尾,并使其生效(. /etc/profile):

#set hadoop path

export HADOOP_HOME=/opt/hadoop/hadoop-2.7.2

export PATH=$PATH:$HADOOP_HOME/bin

[root@masternode conf]# hadoop version

Hadoop 2.7.2

Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r b165c4fe8a74265c792ce23f546c64604acf0e41

Compiled by jenkins on 2016-01-26T00:08Z

Compiled with protoc 2.5.0

From source with checksum d0fda26633fa762bff87ec759ebe689c

This command was run using /opt/hadoop/hadoop-2.7.2/share/hadoop/common/hadoop-common-2.7.2.jar

③ 创建临时目录

[root@masternode hadoop-2.7.2]# mkdir -p /opt/hadoop/tmp

[root@masternode hadoop-2.7.2]# mkdir -p /opt/hadoop/hdfs/data

[root@masternode hadoop-2.7.2]# mkdir -p /opt/hadoop/hdfs/name

mkdir /opt/hadoop/hadoop-2.7.2/pids

mkdir /opt/hadoop/tmp/journal

chmod 755 /opt/hadoop/hdfs/data

chmod 755 /opt/hadoop/hdfs/name

chmod 755 /opt/hadoop/tmp

chmod 755 /opt/hadoop/tmp/journal

④ 配置 hadoop

修改配置文件

需要修改的配置文件主要有下面几个:

./core-site.xml 

./hdfs-site.xml 

./mapred-site.xml(开始的安装包中是没有这个文件的,需要将文

件./mapred-site.xml.template 复制并且重名为 mapred-site.xml)。

./yarn-site.xml 

./yarn-env.sh 

./hadoop-env.sh 

./slave

[root@masternode hadoop-2.7.2]# pwd

/opt/hadoop/hadoop-2.7.2

[root@masternode hadoop-2.7.2]# ls

bin  include  libexec      NOTICE.txt  sbin

etc  lib      LICENSE.txt  README.txt  share

[root@masternode hadoop-2.7.2]# cd etc/hadoop/

/opt/hadoop/hadoop-2.7.2/etc/hadoop

(1)配置 hadoop-env.sh

配置 hadoop-env.sh 文件 –> 修改 JAVA_HOME

export JAVA_HOME=/usr/java/jdk1.7.0_79/

export HADOOP_PID_DIR=$HADOOP_HOME/pids

export HADOOP_HOME=/opt/hadoop/hadoop-2.7.2

export HADOOP_PID_DIR=$HADOOP_HOME/pids

export PATH=$PATH:$HADOOP_HOME/bin

(2)配置 yarn-env.sh 文件 

配置 yarn-env.sh 文件 –>> 修改 JAVA_HOME

# some Java parameters

export JAVA_HOME=/usr/java/jdk1.7.0_79/

export YARN_PID_DIR=/opt/hadoop/hadoop-2.7.2/pids

(3)配置slaves

配置 slaves 文件 –>> 增加 slave 节点

slavenode2

slavenode3

(4)配置 core-site.xml 文件

<configuration>   

    <property> 

        <name>fs.trash.interval</name> 

        <value>1440</value> 

    </property> 

    <property> 

        <name>fs.defaultFS</name>   

        <value>hdfs://cluster-ha</value> 

    </property> 

 <property>   

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

        <value>/opt/hadoop/tmp/journal</value>   

    </property> 

    <property>   

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

        <value>131072</value>   

    </property>   

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

    <property>   

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

        <value>/opt/hadoop/tmp</value>   

    </property>   

    <!– 指定 zookeeper 地址 –>   

    <property>   

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

        <value>slavenode1:2181,slavenode3:2181,slavenode2:2181</value>   

    </property>   

    <property>   

        <name>ha.zookeeper.session-timeout.ms</name>   

        <value>300000</value>   

    </property> 

</configuration>

 

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

<configuration>   

    <property>   

        <name>dfs.nameservices</name>   

        <value>cluster-ha</value>   

    </property>   

    <property>   

        <name>dfs.ha.namenodes.cluster-ha</name>   

        <value>nn,snn</value>   

    </property>   

    <property>   

        <name>dfs.namenode.rpc-address.cluster-ha.nn</name>   

        <value>slavenode1:9000</value>   

    </property>   

    <property>   

        <name>dfs.namenode.http-address.cluster-ha.nn</name>   

        <value>slavenode1:50070</value>   

    </property>   

    <property>   

        <name>dfs.namenode.rpc-address.cluster-ha.snn</name>   

        <value>masternode:9000</value>   

    </property>   

    <property>   

        <name>dfs.namenode.http-address.cluster-ha.snn</name>   

        <value>masternode:50070</value>   

    </property>   

    <property>   

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

        <value>qjournal://slavenode1:8485;slavenode2:8485;slavenode3:8485;masternode:8485/cluster-ha</value>   

    </property>   

    <property>   

        <name>dfs.client.failover.proxy.provider.cluster-ha</name>   

        <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value> 

    </property> 

    <property>   

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

        <value>sshfence</value>   

    </property>   

    <property>   

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

        <value>/opt/hadoop/tmp/journal</value>   

    </property>   

      <property>   

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

        <value>true</value>   

    </property>   

      <property>   

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

        <value>file:/opt/hadoop/hdfs/name</value>   

    </property>   

      <property>   

        <name>dfs.datanode.data.dir</name>   

        <value>file:/opt/hadoop/hdfs/data</value>   

    </property>   

      <property>   

        <name>dfs.replication</name>   

        <value>3</value>   

    </property>   

      <property>   

        <name>dfs.webhdfs.enabled</name>   

        <value>true</value>   

    </property>   

      <property>   

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

        <value>slavenode1:2181,slavenode3:2181,slavenode2:2181</value>   

    </property>     

    <property> 

        <name>dfs.namenode.handler.count</name> 

        <value>600</value> 

        <description>The number of server threads for the namenode.</description> 

    </property> 

    <property> 

        <name>dfs.datanode.handler.count</name> 

        <value>600</value> 

        <description>The number of server threads for the datanode.</description> 

    </property> 

    <property> 

        <name>dfs.client.socket-timeout</name> 

        <value>600000</value> 

    </property> 

    <property>   

        <name>dfs.datanode.max.transfer.threads</name>   

        <value>409600</value>   

    </property>   

<property>
          <name>dfs.ha.fencing.methods</name>
          <value>sshfence
          shell(/bin/true)</value>
      </property>
      <property>
          <name>dfs.ha.fencing.ssh.private-key-files</name>
          <value>/home/hadoop/.ssh/id_rsa</value>
      </property>
      <property>
        <name>dfs.ha.fencing.ssh.connect-timeout</name>
        <value>30000</value>
      </property>

</configuration> 

(6)配置  mapred-site.xml 文件

–>> 增加 mapreduce 配置(使用 yarn 框架、jobhistory 使用地址以及 web 地址)

[root@masternode hadoop]# mv mapred-site.xml.template mapred-site.xml

 vi mapred-site.xml

<configuration>   

    <!– 配置 MapReduce 运行于 yarn 中 –>   

    <property>   

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

        <value>yarn</value>   

    </property>   

    <property> 

        <name>mapreduce.job.maps</name> 

        <value>12</value> 

    </property> 

    <property> 

        <name>mapreduce.job.reduces</name> 

        <value>12</value> 

    </property> 

</configuration> 

(7)配置 yarn-site.xml  文件 –>> 增加 yarn 功能

<configuration>   

    <property>   

        <name>yarn.log-aggregation-enable</name>   

        <value>true</value>   

    </property>   

    <property>   

        <name>yarn.log-aggregation.retain-seconds</name>   

        <value>259200</value>   

    </property>   

    <property>   

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

        <value>slavenode1:2181,slavenode3:2181,slavenode2:2181</value>   

    </property>   

    <property>   

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

        <value>cluster-yarn</value>   

    </property>   

    <property>   

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

        <value>true</value>   

    </property>   

    <property>   

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

        <value>rm1,rm2</value>   

    </property>   

    <property>   

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

        <value>slavenode1</value>   

    </property>       

    <property>   

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

        <value>masternode</value>   

    </property>   

<property>

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

        <value>slavenode1:8030</value>

    </property>

    <property>

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

       <value>masternode:8030</value>

    </property>

    <property>

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

       <value>slavenode1:8031</value>

    </property>

    <property>

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

       <value>masternode:8031</value>

    </property>

    <property>

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

       <value>slavenode1:8032</value>

    </property>

    <property>

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

       <value>masternode:8032</value>

    </property>

    <property>

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

       <value>slavenode:8033</value>

    </property>

    <property>

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

        <value>masternode:8033</value>

    </property>

    <property>

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

       <value>slavenode1:8088</value>

    </property>

    <property>

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

       <value>masternode:8088</value>

    </property> 

    <property> 

        <name>yarn.resourcemanager.ha.automatic-failover.enabled</name> 

        <value>true</value> 

    </property> 

    <property> 

        <name>yarn.resourcemanager.ha.automatic-failover.embedded</name> 

        <value>true</value> 

    </property> 

    <property> 

        <name>yarn.resourcemanager.ha.automatic-failover.zk-base-path</name> 

        <value>/yarn-leader-election</value> 

    </property> 

 

    <property>   

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

        <value>true</value>   

    </property>   

    <property> 

        <name>yarn.resourcemanager.store.class</name> 

        <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value> 

    </property> 

    <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>   

</configuration> 

[root@slavenode1 hadoop-2.7.2]# vi etc/hadoop/log4j.properties 

    log4j.logger.org.apache.hadoop.util.NativeCodeLoader=ERROR 

为了解决启动进程会出现报错

现在在 Master 机器上的 Hadoop 配置就结束了,剩下的就是配置 Slave 机器上的 Hadoop。

最简单的方法是 将 Master 上配置好的 hadoop 所在文件夹 ”/opt/hadoop/hadoop-2.7.2“ 复制到所有的 Slave 的 ”/opt/hadoop” 目录下(实际上 Slave 机器上的 slavers 文件是不必要的,复制了也没问题)。用下面命令格式进行。( 备注:此时用户可以为普通用户也可以为 root)

7. 将配置好的 hadoop 文件 copy 到另一台 slave 机器上

[root@masternode hadoop]# scp -r hadoop-2.7.2/ root@10.10.10.4:/opt/hadoop/

[root@masternode hadoop]# scp -r hadoop-2.7.2/ root@10.10.10.5:/opt/hadoop/

[root@masternode hadoop]# scp -r hadoop-2.7.2/ root@10.10.10.6:/opt/hadoop/

接着在 ”Slave1 .Hadoop” 上修改 ”/etc/profile” 文件,将以下语句添加到末尾,并使其有效(source /etc/profile):

export HADOOP_HOME=/opt/hadoop/hadoop-2.7.2

export PATH=$PATH:$HADOOP_HOME/bin

保存并退出,执行下面命令使其配置立即生效���

source /etc/profile 或 . /etc/profile

8. 启动及验证

1. 格式化 namenode:

[root@masternode hadoop]# pwd

/opt/hadoop

[root@masternode hadoop]# cd hadoop-2.7.2/bin

hdfs zkfc –formatZK– 格式化 zookeeper custer-ha 主目录

2. 启动启动 namenode 日志同步服务 journalnode(四台机器)

/home/hadoop/hadoop-2.7.2/sbin/hadoop-daemon.sh start journalnode 

3. 启动 namenode、同步备用 namenode、启动备用 namenode

① 对 NameNode(masternode)节点进行格式化 

 # hadoop namenode -format

 注意:格式化第二次有可能会造成 DataNode 无法启动,原因是 NameSpaceID 不一致造成,解决方法是找出不一致的 VERSION 修改 NameSpaceID,也可以尝试删除 hdfs/data 目录。

② 启动 masternode(active)节点 NameNode

 d /opt/hadoop/hadoop-2.7.2/sbin

# hadoop-daemon.sh start namenode

③ Slavenode1 节点上同步(masternode)元数据

 # hdfs namenode -bootstrapStandby

④ 在 masternode 格式化 ZKFC

 # hdfs zkfc -formatZK

⑤ 在 masternode 节点启动 HDFS 集群

 # start-dfs.sh 

⑥ 在 Master0 节点启动 YARN 集群

 # start-yarn.sh

⑦ 在 Master1(slavenode1)节点启动 RM

 # yarn-daemon.sh start resourcemanager

⑧ 以后也可以通过 start-all.sh 与 stop-all.sh 启停 Hadoop 集群

 

[root@masternode hadoop-2.7.2]# ./bin/hdfs namenode -format

4. 启动 hadoop

root@masternode centos]# cd /opt/hadoop/hadoop-2.7.2

[root@masternode hadoop-2.7.2]# sbin/start-all.sh 

[root@slavenode1 hadoop-2.7.2]# sbin/stop-all.sh 

This script is Deprecated. Instead use stop-dfs.sh and stop-yarn.sh

16/09/19 01:40:10 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable 有警告

Stopping namenodes on [slavenode1]

slavenode1: stopping namenode

slavenode3: stopping datanode

slavenode2: stopping datanode

masternode: stopping datanode

Stopping secondary namenodes [slavenode1]

slavenode1: stopping secondarynamenode

16/09/19 01:40:29 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable

stopping yarn daemons

stopping resourcemanager

slavenode2: stopping nodemanager

masternode: stopping nodemanager

slavenode3: stopping nodemanager

no proxyserver to stop

[root@slavenode1 hadoop-2.7.2]# ldd lib/native/libhadoop.so.1.0.0 

lib/native/libhadoop.so.1.0.0: /lib64/libc.so.6: version `GLIBC_2.14‘ not found (required by lib/native/libhadoop.so.1.0.0)

        linux-vdso.so.1 =>  (0x00007fff63bff000)

        libdl.so.2 => /lib64/libdl.so.2 (0x00007fc1127c5000)

        libc.so.6 => /lib64/libc.so.6 (0x00007fc112430000)

        /lib64/ld-linux-x86-64.so.2 (0x00007fc112bef000)

[root@slavenode1 hadoop-2.7.2]# ldd –version

ldd (GNU libc) 2.12

Copyright (C) 2010 Free Software Foundation, Inc.

This is free software; see the source for copying conditions.  There is NO

warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Written by Roland McGrath and Ulrich Drepper.

 

原来系统预装的 glibc 库是 2.12 版本,而 hadoop 期望是 2.14 版本,所以打印警告信息。

 

现在有两个办法,重新编译 glibc.2.14 版本,安装后专门给 hadoop 使用,这个有点危险。

第二个办法直接在 log4j 日志中去除告警信息。

[root@slavenode1 hadoop-2.7.2]# vi etc/hadoop/log4j.properties 

    log4j.logger.org.apache.hadoop.util.NativeCodeLoader=ERROR 

9. 验证 hadoop

(1)验证方法一:用 ”jps” 命令

在 Master 上用 java 自带的小工具 jps 查看进程。

[root@masternodehadoop-2.7.2]# jps 

19495 Jps

18849 NameNode

19051 SecondaryNameNode

19228 ResourceManager

[root@masternode  centos]# jps

11664 Jps

11418 DataNode

11519 NodeManager

2)必须要关闭防火墙

[root@masternode hadoop-2.7.2]# service iptables stop

http://125.208.30.88:50070/dfshealth.html#tab-datanode

3)禁用 selinux

    编辑 “/etc/selinux/config“ 文件,设置 ”SELINUX=disabled

或者 setenforce 0

10. 网页查看集群

(1)访问 ”http://10.10.10.3.88:50070″ 或者 http://10.10.10.4:50070

 

Hadoop 安装完成之后,会有两个 web 管理界面,可以分别通过下面的 url 查看。在浏览器中输入 http://10.10.10.4:8088/,网址为 master 的 ip:

在浏览器中输入:http://10.10.10.4:50070/,网址为 master 结点所对应的 IP:

http://hadoop.apache.org/docs/r2.7.3/hadoop-project-dist/hadoop-common/ClusterSetup.html

11.HDFS 的使用 

11.1 帮助 

如果配置好了环境变量,直接运行 hdfs 命令,不加任何参数就能得到 hdfs 的帮助。也可以用 hdfs –help 得到 HDFS 的帮助。

[root@masternode hadoop]# hdfs -help

Usage: hdfs [–config confdir] [–loglevel loglevel] COMMAND

       where COMMAND is one of:

  dfs                  run a filesystem command on the file systems supported in Hadoop.

  classpath            prints the classpath

从上面可以看到,dfs 命令是执行一个 HDFS 文件系统支持的命令。可以进一步查看 dfs 的帮助。下面列出的是 hdfs 的 dfs 命令支持的一些文件系统操作,实际上,具体的各个操作的格式可以也从下面看到具体的说明。

[root@masternode hadoop]# hdfs dfs -help

hadoop dfsadmin -report  #查看 DataNode 节点信息,可以使用这个命令脚本监控 DFS 状况

# hadoop fs -ls hdfs://hcluster:9000/   #指定 HDFS 地址访问

# hadoop fs -ls /   #列出 HDFS 文件系统目录下文件和目录

# hadoop fs -lsr /  #递归列出目录

# hadoop fs -mkdir /test  #创建 test 目录

# hadoop fs -put /root/test.txt /test/test.txt  #上传文件到 test 目录

# hadoop fs -cat /test/test.txt  #查看文件内容

# hadoop fs -du /test/test.txt   #查看文件大小

# hadoop fs -rm /test/test.txt   #删除文件

# hadoop fs -rmr /test       #递归删除目录或文件

下面关于 Hadoop 的文章您也可能喜欢,不妨看看:

Ubuntu14.04 下 Hadoop2.4.1 单机 / 伪分布式安装配置教程  http://www.linuxidc.com/Linux/2015-02/113487.htm

CentOS 安装和配置 Hadoop2.2.0  http://www.linuxidc.com/Linux/2014-01/94685.htm

CentOS 6.3 下 Hadoop 伪分布式平台搭建  http://www.linuxidc.com/Linux/2016-11/136789.htm

Ubuntu 14.04 LTS 下安装 Hadoop 1.2.1(伪分布模式)http://www.linuxidc.com/Linux/2016-09/135406.htm

Ubuntu 上搭建 Hadoop 环境(单机模式 + 伪分布模式)http://www.linuxidc.com/Linux/2013-01/77681.htm

实战 CentOS 系统部署 Hadoop 集群服务 http://www.linuxidc.com/Linux/2016-11/137246.htm

单机版搭建 Hadoop 环境图文教程详解 http://www.linuxidc.com/Linux/2012-02/53927.htm

Hadoop 2.6.0 HA 高可用集群配置详解  http://www.linuxidc.com/Linux/2016-08/134180.htm

Spark 1.5、Hadoop 2.7 集群环境搭建  http://www.linuxidc.com/Linux/2016-09/135067.htm

更多 Hadoop 相关信息见Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-12/138475.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计23682字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7980512
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
星哥带你玩飞牛NAS-5:飞牛NAS中的Docker功能介绍

星哥带你玩飞牛NAS-5:飞牛NAS中的Docker功能介绍

星哥带你玩飞牛 NAS-5:飞牛 NAS 中的 Docker 功能介绍 大家好,我是星哥,今天给大家带来如何在...
零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face 免费服务器 +Docker 快速部署 HertzBeat 监控平台 ...
如何免费使用强大的Nano Banana Pro?附赠邪修的用法

如何免费使用强大的Nano Banana Pro?附赠邪修的用法

如何免费使用强大的 Nano Banana Pro?附赠邪修的用法 前言 大家好,我是星哥,今天来介绍谷歌的 ...
你的云服务器到底有多强?宝塔跑分告诉你

你的云服务器到底有多强?宝塔跑分告诉你

你的云服务器到底有多强?宝塔跑分告诉你 为什么要用宝塔跑分? 宝塔跑分其实就是对 CPU、内存、磁盘、IO 做...
从“纸堆”到“电子化”文档:用这个开源系统打造你的智能文档管理系统

从“纸堆”到“电子化”文档:用这个开源系统打造你的智能文档管理系统

从“纸堆”到“电子化”文档:用这个开源系统打造你的智能文档管理系统 大家好,我是星哥。公司的项目文档存了一堆 ...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板 前言 大家好,我是星哥。星哥发现很多新手刚接触服务器时,都会被“选购...
你的云服务器到底有多强?宝塔跑分告诉你

你的云服务器到底有多强?宝塔跑分告诉你

你的云服务器到底有多强?宝塔跑分告诉你 为什么要用宝塔跑分? 宝塔跑分其实就是对 CPU、内存、磁盘、IO 做...
浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍 前言 在 AI 自动化快速发展的当下,浏览器早已不再只是...
小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比

小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比

小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比 星哥玩云,带你从小白到上云高手。今天咱们就来聊聊——什...
让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级 大家好,我是星哥,之前写了一篇文章 自己手撸一...