hadoop3.*集群搭建,小白必看

hadoop广义上讲是一个大数据生态圈,接受大量处理、处理大量数据的一个全套的框架!

hadoop3.x版本以后,主要有三大模块,HDFS、YARN、mapReduce这三大核心组成!

什么是HDFS?

分布式文件系统,hadoop集群的功能类似于三个臭皮匠抵一个诸葛亮,把很多配置低、廉价的服务器组织到一起,协调好发挥出最大的作用。

分布式文件系统就是把存储文件到可用的服务器上,你不用查看计划应该存储到哪个服务器上,HDFS管家帮你规划实现!!

什么是YARN?

简称资源调度框架,流水线的组长,活多的时候分配多一点的人,活少的时候分配少一点的人,不会浪费人力也不会让活积压干不完。 YARN就是流水线的组长,业务流程数据就是活,电脑内存就是工人!

什么是MapReduce?

计算组件,计算处理数据的封装底层的代码,你写代码的时候,调用可以省事情,但是发展很多年弊端很多,逐渐被弃用!

三个服务器的hostname分别是flinka flinkb flinkc flinka是我们集群的主机

flinka--->flinkb

flinka-->flinkc

flinka-->flinka

都做了免密登录,至于怎么实现,自行百度。很简单!!!

创建目录

在/dev/bigdata下创建三个同级别的文件夹

server 安装位置

data 存储数据位置

export 其他

一、下载hadoop、解压hadoop

1.1、配置hdfs-env.sh文件,这里是配置jdk环境变量以及指定各个进程用户名的地方

目录/dev/bigdata/server/hadoop-3.3.0/etc/hadoop

export JAVA_HOME=你服务器jdk安装的目录位置
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_JOURNALNODE_USER=root
export HDFS_ZKFC_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root

输入G,然后就到了文件的末尾,复制以上的代码,然后保存退出

1.2、配置core-site.xml文件

初始是这样的

复制以下的代码

<configuration>
  <!-- 配置分布式文件系统的类型 -->
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://flinka:8020</value>
  </property>
    <!-- 配置hadoop本地保存数据的位置 -->
  <property>
    <name>hadoop.tmp.dir</name>
    <value>/dev/bigdata/data/hadoop</value>
  </property>
    <!-- 设置HDFS WEB UI用户身份 -->
    <property>
    <name>hadoop.http.staticuser.user</name>
    <value>root</value>
    </property>
   <!-- 整合hive用户代理设置 -->
  <property>
    <name>hadoop.proxyuser.root.hosts</name>
    <value>*</value>
  </property>
  
  <property>
    <name>hadoop.proxyuser.root.groups</name>
    <value>*</value>
  </property>
  

  <!-- 删除文件后先放到.Trash目录 -->
  <property>
    <name>fs.trash.interval</name>
    <value>1440</value>
    <description>单位是分钟,1440/60 = 24 小时,保留一天时间</description>
  </property>
</configuration>

1.3、配置hdfs-site.xml文件,这个是配置hdfs的备份服务器的

<property>
      <name>dfs.namenode.secondary.http-address</name>
      <value>flinkb:9868</value>
   </property>

1.4、配置mapred-site.xml

配置计算程序运行的模式,是yarn还是local

  <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>
  <property>
    <name>mapreduce.jobhistory.address</name>
    <value>flinka:10020</value>
  </property>
  <property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>flinka:19888</value>
  </property>
  <property>
    <name>yarn.app.mapreduce.am.env</name>
    <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
  </property>
  <property>
    <name>mapreduce.map.env</name>
    <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
  </property>
  <property>
    <name>mapreduce.reduce.env</name>
    <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
  </property>

1.5、yarn-site.xml

<property>
      <name>yarn.resourcemanager.hostname</name>
      <value>flinka</value>
   </property>
 
   <!-- Reducer获取数据的方式 -->
   <property>
      <name>yarn.nodemanager.aux-services</name>
      <value>mapreduce_shuffle</value>
   </property>
   
 <property>
      <name>yarn.nodemanager.pmem-check-enabled</name>
      <value>true</value>
   </property>
   
   <property>
      <name>yarn.nodemanager.vmem-check-enabled</name>
      <value>true</value>
   </property>
   
    <property>
      <name>yarn.log.server.url</name>
      <value>http://flinka:19888/jobhistory/logs</value>
  </property>
  
  <!--多长时间聚合删除一次日志 此处-->
<property>
        <name>yarn.log-aggregation.retain-seconds</name>
        <value>2592000</value><!--30 day-->
</property>

1.6、works

1.7、配置hadoop的环境变量

vi /etc/profile

保存文件:wq

source /etc/profile

  1. 分发hadoop到其他机器上

scp -r /dev/bigdata root@flinkc:/dev/

scp -r /dev/bigdata root@flinkb:/dev/

  1. 分发环境变量给其他的机器

在其他机器上生效环境变量配置

source /etc/profile

检查是否配置成功

hadoop version

  1. 启动hadoop集群

最重要的命令 初始化NameNode 这个只能在初次启动hadoop集群的时候初始化,后期如果初始化可能会出现数据清除以及集群的节点之间相互不认识,需要重新搭建集群!!

在主机上运行hdfs namenode -format

如果报错的话,说明配置的文件存在问题,根据相应的错误检查一下配置

出现sucessfully formatted 说明初始化完成,只需要在一台master机器上初始化一次就够了!

启动集群 start-dfs.sh

报错

百度了很多,这个答案是对的

删除了/dev/bigdata/data/hadoop hadoop本地数据存储位置下的所有数据,然后把其他机器上的hadoop安装以及数据全部删除!!!

重新分发数据到其他机器上,然后在初始化数据!

再启动start-dfs.sh

通过jps查看进程

flinka 下面有NameNode

这里有一个问题,flinka是主节点,但是里面只有NameNode没有DataNode?

原因,在生成免密登录的密钥的时候,没有对自身分发

ssh-copy-id flinka

回车

flinkb 下面有

flinkc

启动yarn集群

start-yarn.sh

HFDS的网页是 flinka:9870

YARN的网页是flinka:8088

到这里hadoop集群的搭建就结束了!!!!

让我们开始体验大数据的快乐把!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,这是一个基本的MapReduce程序的框架。在这个程序中,你需要完成mapper和reducer函数,然后将它们添加到这个框架中。下面是一个可能的实现: ``` import java.io.IOException; import java.util.*; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.*; 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 org.apache.hadoop.util.GenericOptionsParser; public class Merge { public static class MyMapper extends Mapper<LongWritable, Text, Text, IntWritable> { private Text line = new Text(); public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException { String[] words = value.toString().split("\\s+"); for (String word : words) { line.set(word); context.write(line, new IntWritable(1)); } } } public static class MyReducer 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(); String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs(); if (otherArgs.length != 2) { System.err.println("Usage: Merge <in> <out>"); System.exit(2); } Job job = Job.getInstance(conf, "Merge"); job.setJarByClass(Merge.class); job.setMapperClass(MyMapper.class); job.setCombinerClass(MyReducer.class); job.setReducerClass(MyReducer.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(IntWritable.class); FileInputFormat.addInputPath(job, new Path(otherArgs[0])); FileOutputFormat.setOutputPath(job, new Path(otherArgs[1])); System.exit(job.waitForCompletion(true) ? 0 : 1); } } ``` 在这个程序中,mapper函数将文件中的每一行作为输入,将每个单词作为键,并输出键值对,其中值为1。reducer函数将相同的键组合在一起,并将它们的值相加。最后,不重复的单词作为输出键,它们的出现次数作为输出值。 你可以将这个代码复制到你的Java文件中,并根据你的要求进行修改。请注意,你需要将输入和输出路径替换为你自己的路径。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_37591637

请给我持续更新的动力~~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值