hadoop2.x linux集群部署

hadoop2.x 集群部署

接收到一个项目 需要进行hadoop的数据迁移.旧版本使用的是hadoop2.x的,所以这里记录一下hadoop2.x的集群部署. 以便于后续数据通过distcp来迁移

linux版本是centos7

下载hadoop

我这里下的是这个版本hadoop-2.10.2.tar.gz. 去清华镜像 或者阿里华为都可以

需要提前准备好jdk1.8 和rsync 和ssl

  • jdk hadoop环境的需要
  • rsync 同步集群分发的时候需要
  • ssl 免密登陆访问集群,便于分发

集群信息

我这里有12台机,其中2台要部署hive.这里一定要使用hostname来进行配置,只通过ip来配置的话,总有一些奇奇怪怪的问题.

涉及的hadoop服务集群如下

复制代码
hadoop98
hadoop99
hadoop100
hadoop102
hadoop103
hadoop104
hadoop105
hadoop106
hadoop107
hadoop108
hive97
hive101
------以上服务器 都是hadoop节点
 
涉及hive服务器 
hive97  主要用这个 ,这台配置了mysql
hive101

解压安装

需要提前安装好jdk 并配置好java_home

然后把hadoop的压缩包扔到服务器 tar -zxvf 解压就行.解压后,我是放置在/usr/local目录下面

配置环境变量

接下来配置一下hadoop的环境变量

/etc/profile

复制代码
export HADOOP_HOME=/usr/local/hadoop-2.10.2
export PATH=$PATH:$REDIS_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

记得 source /etc/profile

配置site配置文件(/hadoop/etc/hadoop目录下)

core-site.xml

xml 复制代码
<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop98:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/usr/local/hadoop-2.10.2/tmp</value>
    </property>
    <property>
        <name>fs.trash.interval</name>
        <value>1440</value>
    </property>
</configuration>

hdfs-site.xml

xml 复制代码
<configuration> 
	<property>
			<name>dfs.namenode.http-address</name>
			<value>hadoop98:50070</value>
	</property>
	<property>
			<name>dfs.namenode.secondary.http-address</name>
			<value>hadoop98:50090</value>
	</property>
	<property>
			<name>dfs.namenode.name.dir</name>
			<value>file:/opt/hadoop/dfs/name</value>
	</property>
	<property>
			<name>dfs.datanode.data.dir</name>
			<value>file:/opt/hadoop/dfs/data</value>
	</property>
	<property>
			<name>dfs.webhdfs.enabled</name>
			<value>true</value>
	</property>  
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.permissions</name>
        <value>false</value>
    </property>
</configuration>

yarn-site.xml

xml 复制代码
<configuration>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop98</value>
    </property>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.log-aggregation-enable</name>
        <value>true</value>
    </property>
    <property>
        <name>yarn.log-aggregation.retain-seconds</name>
        <value>604800</value>
    </property>
    <property>
        <name>yarn.nodemanager.resource.memory-mb</name>
        <value>20480</value>
    </property>
    <property>
        <name>yarn.scheduler.minimum-allocation-mb</name>
        <value>2048</value>
    </property>
    <property>
        <name>yarn.nodemanager.vmem-pmem-ratio</name>
        <value>2.1</value>
    </property>
</configuration>

mapred-site.xml

xml 复制代码
<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>hadoop98:10020</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>hadoop98:19888</value>
    </property>
</configuration>

hadoop-env.sh要追加java_home!

复制代码
export HADOOP_IDENT_STRING=$USER
export JAVA_HOME=/usr/local/jdk1.8.0_281

配置节点slaves

复制代码
[root@hadoop98 hadoop]# cat slaves
hadoop98
hadoop99
hadoop100
hadoop102
hadoop103
hadoop104
hadoop105
hadoop106
hadoop107
hadoop108
hive97
hive101
[root@hadoop98 hadoop]# 

配置免密ssh访问

先到 ~/.ssh目录下 生产密钥对
ssh-keygen -t rsa

然后路径会生成公钥(id_rsa.pub)和私钥(id_rsa)

然后通过ssh-copy-id 服务器名(ip),将公钥分发给其他集群中的服务器.然后就可以ssh 免密登录了

没有ssh-copy-id脚本的情况下,免密登录

通过指令

复制代码
cat ~/.ssh/id_*.pub|ssh root@待访问的主机IP 'cat>>.ssh/authorized_keys' 

解释

  1. 当前主机位 ,需要免密登录 待访问的主机.则执行上面那一条命令
  2. 执行后会提示输入一此,待访问的主机的密码,随后成功后即可

但是,在执行上述之前,要确保待访问的主机的~目录下有.ssh文件夹,如果报错要提前执行以下

复制代码
ssh 待访问的主机 'mkdir .ssh'

编写xsync脚本

xsync这里就是一个名称, 你想改成什么都可以.

他的原理就是通过 使用 rsync同步增量覆盖分发而已
这里测试 hadoop98-100 3台机器,要全部分发的话自行修改 for的循环即可

  • 这里除了 for 的循环设备,其他都不用改,直接抄就行.你有时间的话 可以自行理解一下

  • 为了方便使用xsync,建议在/usr/bin目录下新建这个文件,并授权chmod 777.这样无论到哪个位置 都可以直接使用了

  • 使用方法: xsync 需要同步的目录或者文件即可

    #!/bin/bash

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

    #2. 遍历集群所有机器
    for host in hadoop98 hadoop99 hadoop100
    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

分发到其他集群

复制代码
同步hadoop   xsync /usr/local/hadoop
同步环境变量  xsync /etc/profile
这里在集群机器上,还要执行source /etc/profile .这里直接通过ssh 服务器来 远程执行也是可以的

----以下 看自己的需求------------
当前,也需要同步jdk  xsync /usr/local/jdk

启动集群

这里意识hadoop98作为主服务器,在这上面执行 start-all.sh即可(这里没有这个命令的话,检查一下环境变量是否配置)

或者执行 start-dfs.sh

查看集群启动情况

复制代码
hadoop dfsadmin -report
相关推荐
Lx3528 小时前
Flink SQL在实时数仓中的应用
大数据
玥轩_5218 小时前
Git命令速查手册
大数据·git·elasticsearch·gitee·github·命令速查
口_天_光健9 小时前
制造企业的数据目录编写
大数据·数据库·数据仓库·数据分析
A-刘晨阳9 小时前
时序数据库选型指南:从大数据视角切入,聚焦 Apache IoTDB
大数据·apache·时序数据库·iotdb
汤姆yu9 小时前
基于大数据的短视频流量数据分析与可视化
大数据·数据挖掘·数据分析
Ribou9 小时前
Elasticsearch 9.2.0 三节点集群配置
大数据·elasticsearch·搜索引擎
啊吧怪不啊吧10 小时前
SQL之表的时间类内置函数详解
大数据·服务器·数据库·sql
TDengine (老段)11 小时前
TDengine 产品组件 taosX
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据
字节数据平台12 小时前
火山引擎发布Data Agent新能力,推动用户洞察进入“智能3.0时代”
大数据·人工智能
TDengine (老段)12 小时前
TDengine 字符串函数 CHAR_LENGTH 用户手册
大数据·数据库·时序数据库·tdengine·涛思数据