• centos 搭建 hadoop集群


    在这里我选择了用docker 建立centos 容器
    拉取镜像

    docker pull centos
    
    • 1

    创建容器

    docker run --privileged -d  --name=centos_server_01 0f3e07c0138f /usr/sbin/init
    
    • 1

    1.1修改各个虚拟机主机名

    vi /etc/sysconfig/network
    
    NETWORKING=yes
    HOSTNAME=node-1    
    
    • 1
    • 2
    • 3
    • 4

    1.2修改主机名和IP的映射关系

    vi /etc/hosts
    	
    192.168.1.101	node-1
    192.168.1.102	node-2
    192.168.1.103	node-3
    
    • 1
    • 2
    • 3
    • 4
    • 5

    1.3关闭防火墙

    yum install iptables-services
    
    
    #查看防火墙状态
    service iptables status
    #关闭防火墙
    service iptables stop
    #查看防火墙开机启动状态
    chkconfig iptables --list
    #关闭防火墙开机启动
    chkconfig iptables off
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    这里可能系统不一样会错

    systemctl enable iptables.service
    systemctl stop iptables
    service iptables status
    
    • 1
    • 2
    • 3

    2.配置ssh免登陆
    #生成ssh免登陆密钥

    ssh-keygen -t rsa (四个回车)
    
    
    执行完这个命令后,会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
    将公钥拷贝到要免密登陆的目标机器上
    
    
    cd /root/.ssh
    ssh-copy-id node-2
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    这里可能会报错

    yum install openssh-server
    yum install openssh-clients
    
    • 1
    • 2

    启动sshd,命令/usr/sbin/sshd ,但是出现错误,无法正常启动。

    /usr/sbin/sshd  
    Could not load host key: /etc/ssh/ssh_host_rsa_key
    Could not load host key: /etc/ssh/ssh_host_ecdsa_key
    Could not load host key: /etc/ssh/ssh_host_ed25519_key
    
    • 1
    • 2
    • 3
    • 4

    解决方法如下:

     #ssh-keygen 中的参数 -q 表示以quiet方式执行,也就是不输出执行情况。 -t 表示生成的host key 的类型
    [root@f795f10ac377 hadoop]# ssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -N ''
    [root@f795f10ac377 hadoop]# ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ''
    [root@f795f10ac377 hadoop]# ssh-keygen -t dsa -f /etc/ssh/ssh_host_ed25519_key  -N ''
    Generating public/private dsa key pair.
    Your identification has been saved in /etc/ssh/ssh_host_ed25519_key.
    Your public key has been saved in /etc/ssh/ssh_host_ed25519_key.pub.
    The key fingerprint is:
    d4:8a:c2:e0:75:cf:fc:2b:46:b2:8a:b4:d9:a2:8b:7a root@f795f10ac377
    The key's randomart image is:
    +--[ DSA 1024]----+
    |                 |
    |         .       |
    |  . . . . .      |
    | . + . * .       |
    |  . o . S        |
    |     .. ..       |
    |  .    +  .      |
    |..E=  . o  .     |
    |*++.o. . ..      |
    +-----------------+
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    设置root密码,并测试登陆到本机。

     /usr/sbin/sshd   #开启sshd服务
     netstat -tnulp  #查看是否开启成功
    
    
    passwd root   #设置root账户的密码
    
    • 1
    • 2
    • 3
    • 4
    • 5

    没有的话可以

    yum install passwd
    
    • 1

    建立authorized_keys文件

    touch authorized_keys
    cat id_rsa.pub >> authorized_keys
    
    • 1
    • 2

    然后我们设置完,可以试一下是不是免密成功了
    3.安装JDK
    上传jdk
    将本地文件上传到docker容器

    docker cp 本地文件路径 ID全称:容器路径
    
    • 1

    解压jdk

    tar -zxvf jdk-8u65-linux-x64.tar.gz -C /root/apps
    
    • 1

    将java添加到环境变量中

    vim /etc/profile
    #在文件最后添加
    export JAVA_HOME=/root/apps/jdk1.8.0_65
    export PATH=$PATH:$JAVA_HOME/bin
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    
    #刷新配置
    source /etc/profile
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    4 Hadoop的下载和安装以及配置
    4.1 在容器中通过curl命令下载hadoop 2.6 安装包。 下载地址为: http://apache.fayea.com/hadoop/common/hadoop-2.6.0/

    curl -o hadoop-2.6.tar.gz  http://apache.fayea.com/hadoop/common/hadoop-2.6.0/hadoop-2.6.0.tar.gz
    
    • 1

    也可以直接上传安装包
    上传hadoop的安装包到服务器
    hadoop-2.7.4-with-centos-6.7.tar.gz
    解压

    tar zxvf hadoop-2.7.4-with-centos-6.7.tar.gz
    
    • 1

    配置hadoop
    第一个:hadoop-env.sh

    vi hadoop-env.sh
    export JAVA_HOME=/root/apps/jdk1.8.0_65
    
    • 1
    • 2

    第二个:core-site.xml
    指定HADOOP所使用的文件系统schema(URI),HDFS的老大(NameNode)的地址

    
    	fs.defaultFS
    	hdfs://node-1:9000
    	       tfs://    #  这里根据需求添加
    		   gfs://
    		   file:///
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    指定hadoop运行时产生文件的存储目录,默认/tmp/hadoop-${user.name} -

    
    	hadoop.tmp.dir
    	/home/hadoop/hadoop-2.4.1/tmp
    
    
    • 1
    • 2
    • 3
    • 4

    第三个:hdfs-site.xml

    指定HDFS副本的数量

    
    	dfs.replication
    	2
    
        
    
     	dfs.namenode.secondary.http-address
      	node-22:50090
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    第四个:mapred-site.xml

    mv mapred-site.xml.template mapred-site.xml
    vi mapred-site.xml
    
    • 1
    • 2

    指定mr运行时框架,这里指定在yarn上,默认是local

    
    	mapreduce.framework.name
    	yarn
    
    
    • 1
    • 2
    • 3
    • 4

    第五个:yarn-site.xml

    指定YARN的老大(ResourceManager)的地址

    
    	yarn.resourcemanager.hostname
    	node-1
    
    
    • 1
    • 2
    • 3
    • 4

    NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序默认值:“”

    
    	yarn.nodemanager.aux-services
    	mapreduce_shuffle
    
    
    • 1
    • 2
    • 3
    • 4

    第六个:slaves文件,里面写上从节点所在的主机名字

    vi slaves
    node-21
    node-22
    node-23
    
    • 1
    • 2
    • 3
    • 4

    3.2将hadoop添加到环境变量

    vim /etc/profile
    	export JAVA_HOME=/root/apps/jdk1.8.0_65
    	export HADOOP_HOME=/root/apps/hadoop-2.7.4
    	export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
    
    source /etc/profile
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    格式化namenode(本质是对namenode进行初始化)

    ./hdfs namenode -format
    
    • 1

    报错的话 which:command not found

    yum install which
    
    • 1

    然后重新执行

    有successfully formatted. 代表格式化成功

    启动hadoop

    先启动HDFS
    sbin/start-dfs.sh
    再启动YARN
    sbin/start-yarn.sh
    
    • 1
    • 2
    • 3
    • 4

    验证是否启动成功

    jps
    
    
    	27408 NameNode
    	28218 Jps
    	27643 SecondaryNameNode   (secondarynamenode)
    	28066 NodeManager
    	27803 ResourceManager
    	27512 DataNode
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    查看开启的端口

    netstat -tnulp
    
    • 1

    查看HDFS状况

    hadoop dfsadmin -report
    
    • 1
  • 相关阅读:
    Python实现喷泉粒子系统(Win11)
    Redis数据类型-List-基本使用
    spring boot 定时任务@Scheduled(cron = ““)不可用时并且注入失败时——笔记
    C/C++数据结构之深入了解树与二叉树:概念、存储结构和遍历
    flink cdc原理与使用
    删除链表结点类问题
    【知识网络分析】耦合网络(bibliographic coupling)
    DC电源模块过压保护功能介绍
    移动通信网络规划:抗衰落技术
    2022杭电多校(五)
  • 原文地址:https://blog.csdn.net/m0_67390969/article/details/126326639