HADOOP 高可用搭建

首先先说一下大概的步骤,就用四台为例,简单适合新手操作。

流程是:创建虚拟机,配置好;搭建linux系统;安装jdk(因为后面好多都依赖jkd);免密登录ssh;安装zookeeper;最后就是搭建高可用了。不熟练的小伙伴可以先试试单机模式。

HADOOP 高可用搭建_第1张图片

这是我的四台机子加一个单机模式 。

1.创建虚拟机就不多说了,一直下一步下一步,重复四次创建4个。当然有疑问的可以私聊我,我帮你解决。创建好后就是修改配置

首先输入vi /etc/sysconfig/network-scripts/ifcfg-ens33,回撤

HADOOP 高可用搭建_第2张图片

 修改的几个部分我都写出来了。把dhcp(动态分配IP)改成static,最后一次添加IPADDR=192.168.153.135;
 网关 GATEWAY=192.168.153.2;
 子网掩码  NETMASK=255.255.255.0;
 域名解析器 DNS1=8.8.8.8;esc ,  :wq 保存并退出

hostnamectl set-hostname + 名字 可以修改hostname

2.用linux系统安装数据库

1.下载mysql源安装包

$ wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm

如果运行错误。先运行

yum  install -y wget   ,然后在运行安装包

2.安装mysql源

$ yum localinstall mysql57-community-release-el7-8.noarch.rpm 

3.检查mysql源是否安装成功

$ yum repolist enabled | grep "mysql.*-community.*"

4.安装MySQL 

这一步才是真正安装mysql

$ yum install mysql-community-server

5.启动MySQL服务并设置开机启动

$ systemctl start mysqld

$ systemctl enable mysqld

$ systemctl daemon-reload

6.端口开放

$ firewall-cmd --zone=public --add-port=3306/tcp --permanent

$ firewall-cmd --reload

7.修改root本地登录密码

 1)查看mysql密码

 grep 'temporary password' /var/log/mysqld.log

localhost:是初始密码;

mysql -uroot -p  登录;

set password for 'root'@'localhost'=password('password');修改密码

set global validate_password_policy=0;  设置密码的等级

set global validate_password_length=1;  设置密码的长度

grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;

给权限就登录成功了

3 安装jdk

我写了一个脚本,放在一个文件中,给权限,执行就自动安装了,非常方便

#!/bin/bash

jdk=true

installdir=/opt/soft
if [ ! -d "$installdir" ]
then mkdir $installdir
fi

if [ "$jdk" = true ]
then echo "  ---------安装java JDK------------"
     tar -zxf /opt/install/jdk-8u111-linux-x64.tar.gz -C /opt/soft/
     mv /opt/soft/jdk1.8.0_111 /opt/soft/jdk180
     echo "#jdk" >> /etc/profile
     echo 'export JAVA_HOME=/opt/soft/jdk180' >> /etc/profile
     echo 'export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar' >> /etc/profile
     echo 'export PATH=$PATH:$JAVA_HOME/bin' >> /etc/profile
fi

运行完后,要source /etc/profile 更新一下

java -version ; javac 检查安装是否成功

4.ssh免密登录 注意的是每次只能生成一次,连接其他机器,断了就要重新生成

1 ssh-keygen -t rsa -P "" 

根据RSA算法生成私钥和公钥

可以用 cd .ssh/

2 拷贝公钥给目标服务器
ssh-copy-id -i .ssh/id_rsa.pub -p22 [email protected]

3免密登录 ssh -p22 [email protected].***

另外三台,也这么操作,本机也要自连接

5 安装zookeeper集群

1解压zookeeper
tar -zxvf zookeeper-3.4.5-cdh5.14.2.tar.gz -C /opt/soft
改名 mv zookeeper-3.4.5-cdh5.14.2.tar.gz ./ zookeeper345

2修改配置环境
vi  /etc/profile
export ZOOKEEPER_HOME=/opt/soft/zookeeper345
export PATH=$PATH:$ZOOKEEPER_HOME/bin
source /etc/profile

3修改 zoo.cfg
dataDir=/opt/soft/zookeeper345/datatmp  //新建datatmp
clientPort=2181
server.1=192.168.153.150:2888:3888
server.2=192.168.153.160:2888:3888     //一般写三个
server.3=192.168.153.170:2888:3888

4 在zookeeper345/ 下新建:datatmp,再建一个myid  写server对应的数字

6.高可用搭建

1 解压 tar -zxvf hadoop-2.6.0-cdh5.14.2.tar.gz -C ../soft  

改名 mv  -zxvf hadoop-2.6.0-cdh5.14.2.tar ./ hadoop260

2 到/hadoop260/etc/hadoop    ls查询目录

配置 hadoop.env.sh  mapred.env.sh yarn.env.sh  三个环境 
修改 JAVA_HOME= /opt/soft/jdk180 (jdk的安装路径)

3修改 core-site.xml   hdfs-site.xml   mapred-site.xml  yarn-site.xml 和slaves 重中之重

core-site.xml  

        
         fs.defaultFS
         hdfs://mycluster/
        
        
        
        
          hadoop.tmp.dir
          /opt/soft/hadoop260/hadooptmp/
        
      
        
        
          ha.zookeeper.quorum
          yy150:2181,yy160:2181,yy170:2181
        
      
        
        
          hadoop.proxyuser.bigdata.hosts
          *
        
      
        
          hadoop.proxyuser.bigdata.groups
          *
        
hdfs-site.xml


  
          dfs.nameservices
          mycluster
  
      
        
  
          dfs.ha.namenodes.mycluster
          nn1,nn2
  
      
        
   
          dfs.namenode.rpc-address.mycluster.nn1
          yy150:9000
   
        
        
   
          dfs.namenode.http-address.mycluster.nn1
          yy150:50070
   

 
   
          dfs.namenode.rpc-address.mycluster.nn2
          yy160:9000
   
      
        
   
          dfs.namenode.http-address.mycluster.nn2
          yy160:50070
   
      
        
   
          dfs.journalnode.edits.dir
          /opt/soft/hadoop260/journaldata
   
      
        
   
          dfs.namenode.shared.edits.dir
          qjournal://yy150:8485;yy160:8485;yy170:8485/mycluster
   

 
   
          dfs.ha.automatic-failover.enabled
          true
   
      
        
   
          dfs.client.failover.proxy.provider.mycluster
          org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
   
      
        
   
          dfs.ha.fencing.methods
          
            sshfence
            shell(/bin/true)
          
   
      
        
   
          dfs.ha.fencing.ssh.private-key-files
          /root/.ssh/id_rsa
   

  
   
          dfs.ha.fencing.ssh.connect-timeout
          30000
   
     
   
         dfs.webhdfs.enabled
         true
   
mapred-site.xml

 
       
          mapreduce.framework.name
         yarn
        
      
        
        
          mapreduce.jobhistory.address
          yy180:10020
        
      
        
        
          mapreduce.jobhistory.webapp.address
          yy180:19888
        
yarn-site.xml



 
  
    yarn.resourcemanager.ha.enabled
    true
  

  
  
    yarn.resourcemanager.cluster-id
    yrc
  

  
  
    yarn.resourcemanager.ha.rm-ids
    rm1,rm2
  

 
  
    yarn.resourcemanager.hostname.rm1
    yy150
  

  
  
    yarn.resourcemanager.hostname.rm2
    yy160
  

  
  
    yarn.resourcemanager.zk-address
    yy150:2181,yy160:2181,yy170:2181
  


  
    yarn.nodemanager.aux-services
    mapreduce_shuffle
  

  
  
    yarn.log-aggregation-enable
    true
  

  
  
    yarn.log-aggregation.retain-seconds
    86400
  

  
  
    yarn.resourcemanager.recovery.enabled
    true
  

 
  
    yarn.resourcemanager.store.class
    org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore
  

vi ./slaves

yy150  yy160  yy170 yy180  写入的是你四个虚拟机的hostname。

5  配置环境 vi /etc/profile

#hadoop
export HADOOP_HOME=/opt/soft/hadoop260
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

source /etc/profile

6 同步另外三台
xsync  /hadoop260
配置环境,在更新

切记 如果在格式化namenode不成功的时候,要先启动dfs  start-dfs.sh 

7 hadoop namenode -format 格式化namenode
将本机格式化后的hadooptmp文件同步到另一台备用的namenode里
scp -r ./hadooptmp  root@yy160:/opt/soft/hadoop260

8初始化zookeeper(方便两个namenode交替使用)
hdfs zkfc -formatZK

总结:这样就搭建完成了。其实挺简单的,第一搭建就成功了,后面出了一点问题,找bug难死我了,可以和大家分享一下,就是Hadoop配置完成后,格式化namenode的时候一直失败,搞了好久才发现是要先启动start-dfs.sh ,在格式化就成功了,我还以为我写错了呢。有什么问题都可以私聊我,大家一起学习进步

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