欢迎光临散文网 会员登陆 & 注册

搭建:离线部署 CDH 5.12.1 及部署 Hadoop 集群服务

2023-08-06 17:08 作者:good7ob  | 我要投稿

第一章 - 引言


CDH(Cloudera's Distribution Including Apache Hadoop)是一套基于 Apache Hadoop 的大数据解决方案,提供了分布式存储和计算能力。在本文中,我们将详细介绍如何离线部署 CDH 5.12.1,并搭建一个 Hadoop 集群服务,帮助你快速搭建大数据处理平台。


第一节 - 准备工作


步骤一:下载 CDH 5.12.1 安装包


首先,你需要从 Cloudera 官方网站(https://www.cloudera.com/)下载 CDH 5.12.1 的离线安装包。


步骤二:准备服务器


在搭建 Hadoop 集群之前,你需要准备一组服务器。确保这些服务器能够相互通信,并且满足 Hadoop 的硬件和操作系统要求。


第二节 - 离线部署 CDH 5.12.1


步骤一:上传安装包


将下载的 CDH 5.12.1 安装包上传到所有服务器的相同目录下。


步骤二:解压安装包


在所有服务器上执行以下命令,解压 CDH 5.12.1 安装包:


$ tar -xzvf CDH-5.12.1.tar.gz



步骤三:安装依赖包


在所有服务器上执行以下命令,安装 CDH 5.12.1 所需的依赖包:


$ sudo yum install -y java-1.8.0-openjdk-devel

$ sudo yum install -y mysql-connector-java


步骤四:配置主机名


在所有服务器上执行以下命令,配置主机名:


$ sudo hostnamectl set-hostname <hostname>



其中 <hostname> 是服务器的主机名。


步骤五:设置 hosts 文件


在所有服务器上执行以下命令,编辑 /etc/hosts 文件:


$ sudo vi /etc/hosts


添加所有服务器的 IP 地址和主机名:


<server1_IP> <server1_hostname>

<server2_IP> <server2_hostname>

...


保存并退出文件。


第三节 - 部署 Hadoop 集群服务


步骤一:配置 SSH 免密登录


在其中一台服务器上执行以下命令,生成 SSH 密钥并将其分发到其他服务器上:


$ ssh-keygen -t rsa

$ ssh-copy-id <server2>

$ ssh-copy-id <server3>

...



其中 <server2><server3> 等是其他服务器的主机名。


步骤二:配置 Hadoop 集群


在其中一台服务器上执行以下命令,配置 Hadoop 集群的相关文件:


步骤一:编辑 core-site.xml 文件


在其中一台服务器上,编辑 core-site.xml 文件:


$ cd /path/to/hadoop/conf

$ sudo vi core-site.xml


将以下配置添加到文件中:


<configuration>

<property>

 <name>fs.defaultFS</name>

 <value>hdfs://<namenode>:8020</value>

</property>

</configuration>


其中 <namenode> 是你选择作为 NameNode 的服务器的主机名。


步骤二:编辑 hdfs-site.xml 文件


在同一台服务器上,编辑 hdfs-site.xml 文件:


$ sudo vi hdfs-site.xml



将以下配置添加到文件中:


<configuration>

<property>

 <name>dfs.replication</name>

 <value>3</value>

</property>

</configuration>


这将设置副本数量为 3,即每个数据块将在集群中的 3 个节点上进行复制。


步骤三:编辑 yarn-site.xml 文件


在同一台服务器上,编辑 yarn-site.xml 文件:


$ sudo vi yarn-site.xml




将以下配置添加到文件中:


<configuration>

<property>

 <name>yarn.resourcemanager.hostname</name>

 <value><resourcemanager></value>

</property>

<property>

 <name>yarn.nodemanager.aux-services</name>

 <value>mapreduce_shuffle</value>

</property>

</configuration>


其中 <resourcemanager> 是你选择作为 ResourceManager 的服务器的主机名。


步骤四:编辑 mapred-site.xml 文件


在同一台服务器上,编辑 mapred-site.xml 文件:


$ sudo vi mapred-site.xml


将以下配置添加到文件中:


<configuration>

<property>

 <name>mapreduce.framework.name</name>

 <value>yarn</value>

</property>

</configuration>



步骤五:分发配置文件


在同一台服务器上,执行以下命令,将配置文件分发到其他服务器上:


$ scp core-site.xml hdfs-site.xml yarn-site.xml mapred-site.xml <server2>:<hadoop_path>/conf

$ scp core-site.xml hdfs-site.xml yarn-site.xml mapred-site.xml <server3>:<hadoop_path>/conf

...



其中 <server2><server3> 等是其他服务器的主机名,<hadoop_path> 是 Hadoop 安装目录的路径。


步骤六:格式化 HDFS


在其中一台服务器上,执行以下命令,格式化 HDFS:


$ hdfs namenode -format


步骤七:启动 Hadoop 服务


在其中一台服务器上,执行以下命令,启动 Hadoop 服务:


$ start-dfs.sh

$ start-yarn.sh


步骤八:验证 Hadoop 集群


在浏览器中访问其中一台服务器的主机名和端口号 50070(如 http://<nam enode>:50070)来访问 Hadoop 的 Web UI,确保集群已成功部署并运行。


第四节 - 案例:使用 Hadoop 集群进行数据处理


现在,你已经成功搭建了 CDH 5.12.1 的离线部署和 Hadoop 集群服务。接下来,我们将演示如何使用 Hadoop 集群进行数据处理。


案例:WordCount


我们将使用经典的 WordCount 作为案例来演示 Hadoop 集群的使用。以下是一个简单的 Java 代码示例:


import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.fs.Path;

import org.apache.hadoop.io.IntWritable;

import org.apache.hadoop.io.Text;

import org.apache.hadoop.mapreduce.Job;

import org.apache.hadoop.mapreduce.Mapper;

import org.apache.hadoop.mapreduce.Reducer;

import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;

import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;



import java.io.IOException;

import java.util.StringTokenizer;



public class WordCount {

public static class TokenizerMapper extends Mapper<Object, Text, Text, IntWritable> {

 private final static IntWritable one = new IntWritable(1);

 private Text word = new Text();



 public void map(Object key, Text value, Context context) throws IOException, InterruptedException {

  StringTokenizer itr = new StringTokenizer(value.toString());

  while (itr.hasMoreTokens()) {

•    word.set(itr.nextToken());

•    context.write(word, one);

  }

}

}



public static class IntSumReducer extends Reducer<Text, IntWritable, Text, IntWritable> {

 private IntWritable result = new IntWritable();



 public void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {

  int sum = 0;

  for (IntWritable val : values) {

•    sum += val.get();

  }

  result.set(sum);

  context.write(key, result);

}

}



public static void main(String[] args) throws Exception {

 Configuration conf = new Configuration();

 Job job = Job.getInstance(conf, "word count");

 job.setJarByClass(WordCount.class);

 job.setMapperClass(TokenizerMapper.class);

 job.setCombinerClass(IntSumReducer.class);

 job.setReducerClass(IntSumReducer.class);

 job.setOutputKeyClass(Text.class);

 job.setOutputValueClass(IntWritable.class);

 FileInputFormat.addInputPath(job, new Path(args[0]));

 FileOutputFormat.setOutputPath(job, new Path(args[1]));

 System.exit(job.waitForCompletion(true) ? 0 : 1);

}

}



使用上述代码编译并打包为 WordCount.jar


在集群的其中一台服务器上,执行以下命令运行 WordCount 作业:


$ hadoop jar WordCount.jar WordCount <input_path> <output_path>


其中 <input_path> 是输入文件的路径,<output_path> 是输出结果的路径。


第五节 - 结语


通过本文的介绍,你已经学习了如何离线部署 CDH 5.12.1 和搭建 Hadoop 集群服务。你还了解了如何使用 Hadoop 集群进行数据处理,并通过一个简单的 WordCount 案例进行了演示。


希望本文能够帮助你快速搭建起一个可靠的大数据处理平台,并了解了如何使用 Hadoop 集群进行数据处理。


CDH 提供了强大的分布式存储和计算能力,可以满足大规模数据处理的需求。通过搭建 Hadoop 集群,你可以充分利用集群的计算资源,实现高效的数据处理和分析。


希望本文对你理解和使用 CDH 5.12.1 及 Hadoop 集群服务有所帮助。愿你在大数据处理的道路上取得更大的成功!


搭建:离线部署 CDH 5.12.1 及部署 Hadoop 集群服务的评论 (共 条)

分享到微博请遵守国家法律