Hadoop:HA模式配置与实现

写的不到位的地方,欢迎评论指出不足之处

 

一、检查系统环境

        1、HostName、Hosts、JDK、SSH、网络、防火墙、数据源

二、集群角色分配表

        注:这只是实例

服务器
NameNode NameNode
Zookepper
FailoverController
DataNode Zookepper JournalNode
One
yes
(NN2和其它节点免密)

yes

yes

Two

yes

(NN1和其它节点免密)

yes

yes

yes

yes

Three

yes

yes

yes

Four

yes

yes

三、解压软件

        1、Hadoop、ZooKeeper 软件解压在了 /opt

        2、所有节点上的所有角色数据,都在 /var/hadoop/ha/dfs 目录下(每个节点都一样)

        注:配置的内容只要对,什么形式,大伙随意 

四、配置相关文件

        1、hadoop下的 core-site.xml



  fs.defaultFS
  hdfs://myHA




   ha.zookeeper.quorum
   two:2181,three:2181,four:2181



    ipc.client.connect.timeout
    90000



    ipc.client.connect.max.retries
    100
    Indicates the number of retries a client will make to establish a server connection.


    ipc.client.connect.retry.interval
    10000
    Indicates the number of milliseconds a client will wait for before retrying to establish a server connection.

        2、hadoop下的 hdfs-site.xml


  dfs.replication
  2


  dfs.namenode.name.dir
  /var/hadoop/ha/dfs/name


  dfs.datanode.data.dir
  /var/hadoop/ha/dfs/data




  dfs.nameservices
  myHA




  dfs.ha.namenodes.myHA
  nn1,nn2




  dfs.namenode.rpc-address.myHA.nn1
  one:8020


  dfs.namenode.http-address.myHA.nn1
  one:50070


  dfs.namenode.rpc-address.myHA.nn2
  two:8020


  dfs.namenode.http-address.myHA.nn2
  two:50070




  dfs.namenode.shared.edits.dir
  qjournal://one:8485;two:8485;three:8485/myHA



  dfs.journalnode.edits.dir
  /var/hadoop/ha/dfs/jnode




  dfs.client.failover.proxy.provider.myHA 
org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider




  dfs.ha.fencing.methods
  sshfence 


   
   dfs.ha.fencing.ssh.private-key-files 
   
   /root/.ssh/id_rsa




   dfs.ha.automatic-failover.enabled
   true




   dfs.qjournal.start-segment.timeout.ms
   90000


   dfs.qjournal.select-input-streams.timeout.ms
   90000


   dfs.qjournal.write-txns.timeout.ms
   90000

        3、hadoop下的 slaves

two
three
four

        4、配置 zookeeper

cd /opt/zookeeper-3.4.6/conf
# 将 zoo_sample.cfg 复制改名 zoo.cfg

#dataDir=/tmp/zookeeper                # 原本的样子
dataDir= /var/hadoop/ha/dfs/zk         # 修改 ZK 的数据目录

# 追加,server. (1、2、3)可随意写,只要保证是唯一即可,使用过半选举
# 由于zk有两状态(无主、有主),因此两端口号,各干各的事
server.1=two:2888:3888
server.2=three:2888:3888
server.3=four:2888:3888
# clientPort=2181                      #无需修改,这个端口是为了客户端连接通信时使用

        5、配置 zookeeper 权重,权重的目录需要自己创建,其它配置的目录会自动创建

# 在相应的 zookeeper 节点的目录下,加权重
# 权重内容要与配置文件一样
# 每个节点都要加,不要重复
# 1、2、3
echo 1 >  /var/hadoop/ha/dfs/zk/myid

        6、配置环境变量

vim /etc/profile

export JAVA_HOME=/usr/java/default
export HADOOP_HOME=/opt/hadoop-2.6.5
export ZOOKEEPER_HOME=/opt/zookeeper-3.4.6
export PATH=$PATH:${JAVA_HOME}/bin:$HADOOP_HOME/bin
:$HADOOP_HOME/sbin:$ZOOKEEPER_HOME/bin

        7、将配置好的软件,使用 SSH 发送到相应的服务器上,根据角色配置表,进行发送,ZK一定要记得

        注:配置文件中调用的是 SSH 的私钥,所以将私钥发送对相关节点免密文件中

六、第一次启动,格式化

主控节点,选在one的带NN的服务器上,(具体随意)

1、# (主控节点上)生成 QuorumPeerMain 进程,在相应的节点启动 ZK
zkServer.sh start

2、# (主控节点上)生成 JournalNode 进程,在相应的节点启动 JN
hadoop-daemon.sh start journalnode

3、# (主控节点上)多个NN,选一个NN节点,进行格式化
hdfs namenode -format

4、# (主控节点上)启动NN(主) / namenode 换 zkfc 就是单独启动zkfc
hadoop-daemon.sh start namenode

5、# (副NN节点上)其它 NN (副)启动时同步数据
hdfs namenode -bootstrapStandby

6、# (主控节点上)进行ZK格式化 
hdfs zkfc -formatZK

7、# 启动服务
start-dfs.sh

七、之后启动通过脚本

# 创建一个 sh 脚本文件
# 编辑内容

ssh two "/opt/zookeeper-3.4.6/bin/zkServer.sh start"
ssh three "/opt/zookeeper-3.4.6/bin/zkServer.sh start"
ssh four "/opt/zookeeper-3.4.6/bin/zkServer.sh start"
ssh one "/opt/hadoop-2.10.1/sbin/start-dfs.sh"

八、通过命令操作 hdfs

hdfs dfs -mkdir -p '/data/root'

Hadoop:HA模式配置与实现_第1张图片

你可能感兴趣的:(Hadoop基础,hadoop,大数据,hdfs)