栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Hadoop集群搭建

Hadoop集群搭建

前提: 准备好三台可以互相通信的虚拟机,虚拟机创建教程可以参考我的上一篇博客

1、编写集群分发脚本

rsync和scp区别:用rsync做文件的复制要比scp的速度快,rsync只对差异文件做更新。scp是把所有文件都复制过去。

# scp    -r          $pdir/$fname              $user@hadoop$host:$pdir/$fname
# 命令   递归         要拷贝的文件路径/名称         目的用户@主机:目的路径/名称
scp -r /opt/module/jdk1.8.0_212  atguigu@hadoop103:/opt/module
# rsync    -av       $pdir/$fname              $user@hadoop$host:$pdir/$fname
# 命令   选项参数   要拷贝的文件路径/名称    目的用户@主机:目的路径/名称
rsync -av /opt/software/* atguigu@hadoop103:/opt/software

Linux cd命令

# cd -P /var/lock 可以直接切换到这个目录链接的地址 /run/lock/
[atguigu@hadoop104 ~]$ cd /var/
lrwxrwxrwx.  1 root root   11 12月  7 22:13 lock -> ../run/lock
[atguigu@hadoop103 lock]$ cd -P /var/lock;pwd
/run/lock
[atguigu@hadoop103 lock]$ cd /var/lock;pwd
/var/lock

脚本中mkdir 与 mkdir -p 的区别

# mkdir -p :递归创建目录,即使上级目录不存在,会按目录层级自动创建目录
[atguigu@hadoop103 software]$ mkdir aa/bb;ll
mkdir: 无法创建目录"aa/bb": 没有那个文件或目录
总用量 520604
-rw-r--r--. 1 atguigu atguigu 338075860 10月 17 08:44 hadoop-3.1.3.tar.gz
-rw-r--r--. 1 atguigu atguigu 195013152 10月 17 08:44 jdk-8u212-linux-x64.tar.gz
[atguigu@hadoop103 software]$ mkdir -p aa/bb;ll
总用量 520608
drwxrwxr-x. 3 atguigu atguigu      4096 12月 11 17:02 aa
-rw-r--r--. 1 atguigu atguigu 338075860 10月 17 08:44 hadoop-3.1.3.tar.gz
-rw-r--r--. 1 atguigu atguigu 195013152 10月 17 08:44 jdk-8u212-linux-x64.tar.gz
xsync集群分发脚本
# 说明:在/home/atguigu/bin这个目录下存放的脚本,atguigu用户可以在系统任何地方直接执行
[atguigu@hadoop102 ~]$ cd /home/atguigu
[atguigu@hadoop102 ~]$ ll
总用量 0
[atguigu@hadoop102 ~]$ cd /home/atguigu
[atguigu@hadoop102 ~]$ mkdir bin
[atguigu@hadoop102 ~]$ cd bin
[atguigu@hadoop102 bin]$ vim xsync
[atguigu@hadoop102 bin]$ cat xsync 
#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
then
  echo Not Enough Arguement!
  exit;
fi
#2. 遍历集群所有机器
for host in hadoop102 hadoop103 hadoop104
do
  echo ====================  $host  ====================
  #3. 遍历所有目录,挨个发送
  for file in $@
  do
    #4. 判断文件是否存在
    if [ -e $file ]
    then
      #5. 获取父目录
      pdir=$(cd -P $(dirname $file); pwd)
      #6. 获取当前文件的名称
      fname=$(basename $file)
      ssh $host "mkdir -p $pdir"
      rsync -av $pdir/$fname $host:$pdir
    else
      echo $file does not exists!
    fi
  done
done

[atguigu@hadoop102 bin]$ chmod +x xsync
[atguigu@hadoop102 bin]$ sudo cp xsync /bin/
2、SSH远程登陆和退出

systemctl与service
Linux服务管理之unit的概念

# 安装SSH
[atguigu@hadoop102 ~]$ yum install openssh-server
# 查看SSH是否安装成功
[atguigu@hadoop102 ~]$ rpm -qa | grep ssh
openssh-7.4p1-16.el7.x86_64
openssh-server-7.4p1-16.el7.x86_64
openssh-clients-7.4p1-16.el7.x86_64
libssh2-1.4.3-10.el7_2.1.x86_64
# 停止SSH服务
[atguigu@hadoop102 ~]$ sudo systemctl stop sshd
# 开始SSH服务
[atguigu@hadoop102 ~]$ sudo systemctl start sshd
# 重启SSH服务
[atguigu@hadoop102 ~]$ sudo systemctl restart sshd
# 查看是否启动22端口
[atguigu@hadoop102 ~]$ sudo netstat -antp | grep sshd
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      4695/sshd           
tcp        0      0 127.0.0.1:6010          0.0.0.0:*               LISTEN      4500/sshd: atguigu@ 
tcp        0      0 127.0.0.1:6011          0.0.0.0:*               LISTEN      2325/sshd: atguigu@ 
tcp        0      0 192.168.1.34:22         192.168.1.11:63562      ESTABLISHED 2319/sshd: atguigu  
tcp        0      0 192.168.1.34:22         192.168.1.11:55215      ESTABLISHED 4495/sshd: atguigu  
tcp6       0      0 :::22                   :::*                    LISTEN      4695/sshd           
tcp6       0      0 ::1:6010                :::*                    LISTEN      4500/sshd: atguigu@ 
tcp6       0      0 ::1:6011                :::*                    LISTEN      2325/sshd: atguigu@ 
# 设置开机启动
[atguigu@hadoop102 ~]$ sudo systemctl enable sshd
# 则禁止SSH开机启动
[atguigu@hadoop102 ~]$ sudo systemctl disable sshd
# 登录另一台电脑
[atguigu@hadoop102 ~]$ ssh hadoop103
# 登出另一台电脑 exit、logout、Ctrl + D
[atguigu@hadoop102 ~]$ logout
3、SSH免密登录(互相免密登录的机器上都要配置一次)

PS:hadoop102上,root账号还要配置一次

# Hadoop102生成一对公钥和私钥,键入命令后回车三次
[atguigu@hadoop102 ~]$ ssh-keygen -t rsa
# 将公钥拷贝到要免密登录的目标机器hadoop102上
[atguigu@hadoop102 ~]$ ssh-copy-id hadoop102
# 将公钥拷贝到要免密登录的目标机器hadoop103上
[atguigu@hadoop102 ~]$ ssh-copy-id hadoop103
# 将公钥拷贝到要免密登录的目标机器hadoop104上
[atguigu@hadoop102 ~]$ ssh-copy-id hadoop104
# 配置免密登录所生成文件的目录
[atguigu@hadoop102 .ssh]$ pwd
/home/atguigu/.ssh
# 免密登录生成的文件
[atguigu@hadoop102 .ssh]$ ll
总用量 16
-rw-------. 1 atguigu atguigu 1197 12月 11 20:19 authorized_keys #记录ssh访问过计算机的公钥
-rw-------. 1 atguigu atguigu 1675 12月 11 20:10 id_rsa #生成的私钥
-rw-r--r--. 1 atguigu atguigu  399 12月 11 20:10 id_rsa.pub #生成的公钥
-rw-r--r--. 1 atguigu atguigu  552 12月 11 17:07 known_hosts #存放授权过的无密登录服务器公钥
4、Hadoop配置文件

关于文件协议file:///

# 解压Hadoop
[atguigu@hadoop102 ~]$ tar -zxvf /opt/software/hadoop-3.1.3.tar.gz -C /opt/module/
# 重要的四个配置文件
[atguigu@hadoop102 hadoop]$ ll | grep site
-rw-r--r--. 1 atguigu atguigu   774 9月  12 2019 core-site.xml
-rw-r--r--. 1 atguigu atguigu   775 9月  12 2019 hdfs-site.xml
-rw-r--r--. 1 atguigu atguigu   620 9月  12 2019 httpfs-site.xml # 无关配置文件
-rw-r--r--. 1 atguigu atguigu   682 9月  12 2019 kms-site.xml # 无关配置文件
-rw-r--r--. 1 atguigu atguigu   758 9月  12 2019 mapred-site.xml
-rw-r--r--. 1 atguigu atguigu   690 9月  12 2019 yarn-site.xml
# 主要映射jdk的配置文件,可以不配
[atguigu@hadoop102 hadoop]$ ll | grep hadoop-env
-rw-r--r--. 1 atguigu atguigu  3999 9月  12 2019 hadoop-env.cmd # 无关配置文件
-rw-r--r--. 1 atguigu atguigu 15903 9月  12 2019 hadoop-env.sh
核心配置文件(用于全局的配置):core-site.xml

HDFS-- Hadoop中的ProxyUser





	
    
        fs.defaultFS
        hdfs://hadoop102:9820
	

    
        hadoop.tmp.dir
        
        /opt/module/hadoop-3.1.3/data
	



    
        hadoop.http.staticuser.user
        atguigu
	



    
        hadoop.proxyuser.atguigu.hosts
        *
	

    
        hadoop.proxyuser.atguigu.groups
        *


    
        hadoop.proxyuser.atguigu.users
        *
	


HDFS配置文件:hdfs-site.xml

配置用户访问NameNode、Secondary NameNode的网页地址





	
	
        dfs.namenode.http-address
        hadoop102:9870
    
	
    
        dfs.namenode.secondary.http-address
        hadoop104:9868
    

YARN配置文件:yarn-site.xml

mr!shuffle详细全过程






    
        yarn.nodemanager.aux-services
        mapreduce_shuffle
	

    
        yarn.resourcemanager.hostname
        hadoop103
	



    
        yarn.nodemanager.env-whitelist
        JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME
	



    
        yarn.scheduler.minimum-allocation-mb
        
        512
    
    
        yarn.scheduler.maximum-allocation-mb
        4096
	

    
        yarn.nodemanager.resource.memory-mb
        4096
	



    
        yarn.nodemanager.pmem-check-enabled
        false
    
    
        yarn.nodemanager.vmem-check-enabled
        false
    

MapReduce配置文件:mapred-site.xml




	
    
        mapreduce.framework.name
        yarn
    

# 分发配置文件到其他两台机器
[atguigu@hadoop102 hadoop]$ xsync /opt/module/hadoop-3.1.3/etc/hadoop/
# 检查文件分发是否成功
[atguigu@hadoop103 hadoop]$ cat mapred-site.xml 







	
    
        mapreduce.framework.name
        yarn
    

5、群起集群

Linux如何查看端口

# 配置work
[atguigu@hadoop102 hadoop]$ vim workers 
# 分发配置好的hadoop-3.1.3
[atguigu@hadoop102 hadoop]$ xsync /opt/module/hadoop-3.1.3
# 节点格式化NameNode
# 重新格式化NameNode前,一定要先停止namenode和datanode进程,并且要删除所有机器的data和logs目录
[atguigu@hadoop102 hadoop]$ hdfs namenode -format
# 单点启动,hadoop102:9870
[atguigu@hadoop102 hadoop-3.1.3]$ hdfs --daemon start namenode
[atguigu@hadoop102 hadoop-3.1.3]$ jps
9222 NameNode
9288 Jps
# hadoop102、hadoop103、hadoop104都启动一遍
[atguigu@hadoop102 hadoop-3.1.3]$ hdfs --daemon start datanode
# hadoop104 :2nn在实际情况中不使用,现在只是练习
[atguigu@hadoop104 hadoop-3.1.3]$ hdfs --daemon start secondarynamenode
# hadoop103 :rm 相关
[atguigu@hadoop103 hadoop-3.1.3]$ yarn --daemon start resourcemanager
# hadoop102、hadoop103、hadoop104都启动一遍
[atguigu@hadoop102 hadoop-3.1.3]$ yarn --daemon start nodemanager
hadoop3.1.3单点启动/停止的集群命令
hdfs --daemon start namenode # hadoop102
hdfs --daemon start secondarynamenode # hadoop104
yarn --daemon start resourcemanager # hadoop103
hdfs --daemon start datanode # hadoop102、hadoop103、hadoop104
yarn --daemon start nodemanager # hadoop102、hadoop103、hadoop104

hdfs --daemon stop namenode # hadoop102
hdfs --daemon stop secondarynamenode # hadoop104
yarn --daemon stop resourcemanager # hadoop103
hdfs --daemon stop datanode # hadoop102、hadoop103、hadoop104
yarn --daemon stop nodemanager # hadoop102、hadoop103、hadoop104
6、清理/tmp文件
# 正常情况下,/tmp目录的权限是:
[atguigu@hadoop102 tmp]$ ls -l /
drwxrwxrwt.  19 root root  4096 12月 12 18:16 tmp
# 所有用户可以建立文件[文件夹],可以删除别人的文件[文件夹],但是不能改写别人的文件[文件夹]
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/653745.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号