大数据 Hadoop 集群安装

一、集群配置信息

二、克隆相关主机,以及初始化主机名及IP

链接:https://www.cnblogs.com/mangoubiubiu/p/17364337.html

配置Hosts

vi /etc/hosts

192.168.117.120 hadoop120
192.168.117.121 hadoop121
192.168.117.122 hadoop122

三、JDK安装

此处略过

四、Hadoop安装

1、下载Hadoop安装包

链接:https://archive.apache.org/dist/hadoop/common/hadoop-3.1.3/hadoop-3.1.3.tar.gz

2、上传至Linux对应目录并解压缩(192.168.117.120)

vim /etc/profile
export HADOOP_HOME=/usr/hadoop/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
source /etc/profile

 192.168.117.120 机已安装完毕

3、编写集群分发脚本xsync

一、scp(secure copy) 安全拷贝

(1) scp定义

 scp可以实现服务器与服务器之间的数据拷贝。(from server1 to server2 )

(2) 基本语法

scp  -r      $pdir/$fname                     $user@$host:$pdir/$fname
命令 递归 要拷贝的文件路径/名称 目的地用户@主机:目的地路径/名称

(3) 实例操作

a. 将本机120的hadoop安装包拷贝到 122机

scp -r hadoop-3.1.3/ root@hadoop122:/usr/hadoop/

b. 将远程机120的hadoop安装包拉取到本机 121机

scp -r root@hadoop120:/usr/hadoop/hadoop-3.1.3  ./  

c. 本机是121机,将远程机120的hadoop安装包拷贝到远程机122

scp -r root@hadoop120:/usr/hadoop/* root@hadoop122:/usr/hadoop/

二、rsync远程同步工具

         rsync主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。

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

(1)基本语法

rsync  -av         $pdir/$fname             $user@$host:$pdir/$fname
命令 选项参数 要拷贝的文件路径/名称 目的地用户@主机:目的地路径/名称

选项参数说明

选项  功能
-a 归档拷贝
-v 显示复制过程

(2)案例实操

a. 删除hadoop121中/usr/hadoop/hadoop-3.1.3/bin

[root@hadoop121 hadoop-3.1.3]# rm -rf bin/

b. 同步hadoop120中的/usr/hadoop/hadoop-3.1.3 到 hadoop121

[root@hadoop120 hadoop]# rsync -av hadoop-3.1.3/ root@hadoop121:/usr/hadoop/hadoop-3.1.3/

三、xsync集群分发脚本

(1)需求:循环复制文件到所有节点的相同目录下

(2)需求分析:

(a)rsync命令原始拷贝:
rsync -av /usr/hadoop  root@hadoop122:/usr/hadoop/
(b)期望脚本:

         xsync要同步的文件名称

 (c)期望脚本在任何路径都能使用(脚本放在声明了全局环境变量的路径)
[root@hadoop121 hadoop-3.1.3]# echo $PATH
:/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/java/jdk1.8.0_181/bin:/root/bin

(3)脚本实现:

#!/bin/bash

#1.判断参数个数
if [ $# -lt 1 ]
then
    echo Not Enough Arguement!
    exit;
fi

#2.遍历集群所有机器
for host in hadoop120 hadoop121 hadoop122
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 doest not exists!
        fi
     done
done

四、ssh免密登录

a.hadoop120免密登录 hadoop121 hadoop122
ssh-keygen -t rsa
ssh-copy-id hadoop121
ssh-copy-id hadoop122

以此类推 三台设置免密登录

4、集群配置

 (1)集群部署规划

        注意:

  1.   NameNode和SecondaryNameNode不要安装在同一台服务器。
  2.   ResourceManager也很消耗内存,不要和NameNode、SecondaryNameNode配置在同一台机器上。
  hadoop120 hadoop121 hadoop122
HDFS

NameNode

DataNode

DataNode

SecondaryNameNode

DataNode

YARN NodeManager

ResourceManager

NodeManager

NodeManager

 (2)配置文件说明

         Hadoop配置文件分两类:默认配置文件和自定义配置文件,只有用户想修改某一默认配置值是,才需要修改自定义配置文件,更改相应属性到的值。

         a. 默认配置文件:

要获取的默认文件 文件存放在Hadoop的jar包中的位置
[core-default.xml] hadoop-common-3.1.3.jar/core-default.xml
[hdfs-default.xml] hadoop-hdfs-3.1.3.jar/hdfs-default.xml
[yarn-default.xml] hadoop-yarn-common-3.1.3.jar/yarn-default.xml
[mapred-default.xml] hadoop-mapreduce-client.core-3.1.3.jar/mapred-default.xml

         b. 自定义配置文件:

       core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml 四个配置文件存放在$HADOOP_HOME/etc/hadoop这个路径,用户可以根据项目需求重新进行修改配置。

 (3)配置集群

 1 核心配置文件

  配置core-site.xml   

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
 
 
<configuration>
    <!-- 指定 NameNode 的地址 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop120:8020</value>
    </property>
 
    <!-- 指定 hadoop 数据的存储目录 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/usr/hadoop/hadoop-3.1.3/data</value>
    </property>
 
    <!-- 配置 HDFS 网页登录默认使用的静态用户为 -->
    <property>
        <name>hadoop.http.staticuser.user</name>
        <value>kw</value>
    </property>
 
 
</configuration>

 2 HDFS配置文件

配置hdfs-site.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>

 <property>
    <name>dfs.namenode.http-address</name>
    <value>hadoop160:9870</value>
  </property>
 <property>
   <name>dfs.namenode.secondary.http-address</name>
   <value>hadoop162:9868</value>
  </property>

</configuration>

 3 yarn-site.xml配置

文件内容如下

 <!-- 指定MR走shuffle -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>

    <!-- 指定ResourceManager的地址-->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop121</value>
    </property>

    <!-- 环境变量的继承 -->
    <property>
        <name>yarn.nodemanager.env-whitelist</name>
        <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
    </property>

 4 MapReduce配置文件—mapred-site.xml

    <!-- 指定MapReduce程序运行在Yarn上 -->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>

 在120 配好配置文件后,将文件分发到其他机器

5、群起集群

1) 配置workers

[root@hadoop120 hadoop]# vim /usr/hadoop/hadoop-3.1.3/etc/hadoop/workers
hadoop120
hadoop121
hadoop122

注意:该文件中添加的内容结尾不允许有空格,文件中不允许有空行。

2) 启动集群

       1.如果集群是第一次启动,需要在 hadoop120 节点格式化 NameNode 注意:格式化NameNode,会产生新的集群 id,导致 NameNode 和 DataNode 的集群 id 不一致,集群找不到已往数据。如果集群在运行过程中报错,需要重新格式化 NameNode 的话,一定要先停止namenode 和 datanode 进程,并且要删除所有机器的data 和 logs 目录,然后再进行格式化。

hdfs namenode -format

3) 启动HDFS

sbin/start-dfs.sh
 启动报错一:hadoop120: ERROR: JAVA_HOME is not set and could not be found.

 这里我们三台机JAVA环境变量都配好了 javac 也确实没有问题,找到/etc/hadoop/hadoop-env.sh文件 找到JAVA_HOME配置  配上你的路径

 启动报错二:ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.

增加如下配置,注意是在文件开始空白处

在start-dfs.sh中:

HDFS_DATANODE_USER=root

HADOOP_SECURE_DN_USER=hdfs

HDFS_NAMENODE_USER=root

HDFS_SECONDARYNAMENODE_USER=root

在start-yarn.sh中

YARN_RESOURCEMANAGER_USER=root

HADOOP_SECURE_DN_USER=yarn

YARN_NODEMANAGER_USER=root

4) 在配置了ResourceManager的节点(hadoop121)启动YARN

[root@hadoop121 hadoop-3.1.3]# sbin/start-yarn.sh 

SUCCESS!!!!!

5) Web端查看HDFS的NameNode

 (a)浏览器输入:http://hadoop120:9870

   (b)   查看HDFS上存储的数据信息

6) Web端查看YARN的ResourceManager

   (a) 浏览器输入:http://hadoop121:8088

 (b) 查看YARN上运行的JOB信息

 PS 注意配置你本机的hosts地址

 

 

 

posted @ 2023-06-18 14:01  KwFruit  阅读(62)  评论(0编辑  收藏  举报