时间: 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 |
(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)在/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
#腾讯云侧每个节点都需要修改 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.ssh-keygen,生成公钥和秘钥,在/root/.ssh/中 2.ssh-copy-id 其他节点IP 将公钥拷贝到其他节点
有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通信端口用9000和8020,这里配置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个相关的配置文件,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>
(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,如下图所示:
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