基于腾讯云CVM搭建Hadoop集群并做数据迁移-深蓝源码网


时间: 2020-09-03 00:08:26 人气: 2276 评论: 0

一、需求和目标

本文主要介绍如何在腾讯云CVM上搭建Hadoop集群,以及如何通过distcp工具将友商云Hadoop中的数据迁移到腾讯云。

二、环境说明

JDK版本:jdk1.8.0_171

Hadoop版本:hadoop-2.7.4

主机

角色

软件

腾讯云tx-namenode 172.16.2.234

NameNode/SecondaryNameNode/ ResourceManager

HDFS/YARN

腾讯云tx-datanode1 172.16.2.4

DataNode/NodeManager

HDFS/YARN

腾讯云tx-datanode2 172.16.2.8

DataNode/NodeManager

HDFS/YARN

腾讯云tx-datanode3 172.16.2.7

DataNode/NodeManager

HDFS/YARN

友商云ali-namenode 10.1.125.118

NameNode/SecondaryNameNode/ ResourceManager

HDFS/YARN

友商云ali-datanode1 10.1.125.119

DataNode/NodeManager

HDFS/YARN

友商云ali-datanode2 10.1.125.116

DataNode/NodeManager

HDFS/YARN

友商云ali-datanode3 10.1.125.117

DataNode/NodeManager

HDFS/YARN

三、腾讯云Hadoop集群搭建

1、系统环境配置

1.1 配置主机名(永久修改)

(1)在腾讯云tx-namenode节点配置:

[root@tx-namenode ~]# vim /etc/sysconfig/network
NETWORKING=yes  #使用网络
HOSTNAME=tx-namenode  #设置主机名

(2)腾讯云tx-datanode1节点配置:

[root@tx-datanode1 ~]# vim /etc/sysconfig/network
NETWORKING=yes  #使用网络
HOSTNAME=tx-datanode1  #设置主机名

(3)腾讯云tx-datanode2节点配置:

[root@tx-datanode2 ~]# vim /etc/sysconfig/network
NETWORKING=yes  #使用网络
HOSTNAME=tx-datanode2  #设置主机名

(4)腾讯云tx-datanode3节点配置:

[root@tx-datanode3 ~]# vim /etc/sysconfig/network
NETWORKING=yes  #使用网络
HOSTNAME=tx-datanode3  #设置主机名

1.2 安装JAVA运行环境

(1)在/usr下创建Java目录

mkdir -p /usr/java

(2)将JDK包解压到/usr/java下

tar xvf jdk-8u171-linux-x64.tar -C /usr/java

(3)设置环境变量

vim /etc/profile
#添加如下配置
export JAVA_HOME=/usr/java/jdk1.8.0_171
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export HADOOP_HOME="/usr/hadoop-2.7.4"
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
#重新加载,使配置生效
source /etc/profile

1.3 配置hosts

#腾讯云侧每个节点都需要修改
vim /etc/hosts
172.16.2.234  tx-namenode
172.16.2.4  tx-datanode1
172.16.2.8  tx-datanode2
172.16.2.7  tx-datanode3

1.4 配置SSH免秘钥登录

#注意:每个节点都需要操作
1.ssh-keygen,生成公钥和秘钥,在/root/.ssh/2.ssh-copy-id 其他节点IP 将公钥拷贝到其他节点

2、Hadoop安装与配置

2.1 配置HDFS集群

有3个相关的配置文件,hadoop-env.sh、core-site.xml、hdfs-site.xml,每台节点上都需要配置。

(1)配置 hadoop-env.sh

export JAVA_HOME=/usr/java/jdk1.8.0_171

(2)配置 core-site.xml

mkdir –p /var/hadoop  #创建Hadoop临时目录
vim core-site.xml
#添加如下代码
#一般hdfs的rpc通信端口用90008020,这里配置9000
<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://tx-namenode:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/var/hadoop</value>
    </property>
</configuration>

(3)配置 hdfs-site.xml

vim hdfs-site.xml
#添加如下代码
<configuration>
<property>
        <name>dfs.namenode.http-address</name>
        <value>tx-namenode:50070</value>
    </property>
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>tx-namenode:50090</value>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>2</value> #指定HDFS副本数量为2
    </property>
    <property>
 <name>dfs.client.use.datanode.hostname</name>
 <value>true</value> #设置为true,确保客户端访问datanode的时候是通过主机域名访问,就不会出现通过内网IP来访问了
 <description>only cofig in clients</description>
</property>
</configuration>

2.2 配置YARN集群

有2个相关的配置文件,mapred-site.xml、yarn-site.xml,在每个节点上都需要做配置。

(1)mapred-site.xml 配置

默认有mapred.xml.template文件,我们要复制该文件,并命名为mapred.xml,该文件用于指定MapReduce使用的框架

cp mapred-site.xml.template mapred-site.xml 
vim mapred-site.xml
#添加如下代码
<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

(2)yarn-site.xml 配置

vim yarn-site.xml
#添加如下代码
<configuration>

<!-- Site specific YARN configuration properties -->
<property>
        <name>yarn.resourcemanager.hostname</name>
        <value>tx-namenode</value>
    </property>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
<property>
        <name>yarn.nodemanager.resource.cpu-vcores</name>
        <value>2</value>
</property>
<property>
    <name>yarn.nodemanager.resource.memory-mb</name>
    <value>4096</value>
    <discription>每个节点可用内存,单位MB</discription>
</property>
</configuration>

2.3 集群启动与测试

(1)格式化namenode,只需要在腾讯云tx-namenode上执行一次

#格式化
./bin/hdfs namenode -format

(2)启动和停止HDFS集群,在每个节点上执行

#启动
./sbin/start-dfs.sh
#停止
./sbin/stop-dfs.sh

(3)验证HDFS集群是否组建成功

./bin/hdfs dfsadmin -report

看到4个节点,说明HDFS集群正常

HDFS的web管理控制台,端口是50070

(4)验证角色

jps

(5)启动和停止yarn集群,在每个节点上执行

#启动
./sbin/start-yarn.sh
#停止
./sbin/stop-yarn.sh

(6)验证yarn集群状态

./bin/yarn node -list

看到4个节点,说明yarn集群正常

可以访问YARN的管理界面,端口是8088,验证YARN,如下图所示:

2.4 运行一个MR任务

Hadoop安装包里提供了现成的例子,在Hadoop的share/hadoop/mapreduce目录下。运行例子:

[root@tx-namenode hadoop-2.7.4]# ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.4.jar pi 5 10
Number of Maps  = 5
Samples per Map = 10
Wrote input for Map #0
Wrote input for Map #1
Wrote input for Map #2
Wrote input for Map #3
Wrote input for Map #4
Starting Job
19/03/02 21:17:36 INFO client.RMProxy: Connecting to ResourceManager at ali-namenode/10.10.2.12:8032
19/03/02 21:17:37 INFO input.FileInputFormat: Total input paths to process : 5
19/03/02 21:17:37 INFO mapreduce.JobSubmitter: number of splits:5
19/03/02 21:17:37 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1551530990772_0001
19/03/02 21:17:37 INFO impl.YarnClientImpl: Submitted application application_1551530990772_0001
19/03/02 21:17:37 INFO mapreduce.Job: The url to track the job: http://ali-namenode:8088/proxy/application_1551530990772_0001/
19/03/02 21:17:37 INFO mapreduce.Job: Running job: job_15										

技术沙龙 教程文章 热点综合

评论