Hadoop,大数据离不开它

大数据 2023-07-05 17:29:38
55阅读

 

文中转载微信公众平台「虞胆大的唧唧喳喳」,创作者虞胆大 。转截文中请联络虞胆大的唧唧喳喳微信公众号。

构建数仓,hadoop尽管有点儿过时,但或是必不可少的。文中叙述下单机的hadoop运行体制。

HDFS是Google GFS的开源系统完成,是一个分布式存储,是云计算技术的根基,立即上框架图:

关键包括Namenode和Datanodes,MapReduce关键便是在Datanodes开展并行处理。

core-site.xml:

 
  1. <property> 
  2.     <name>fs.defaultFS</name
  3.     <value>hdfs://localhost:8001</value> 
  4. </property> 
  5. <property> 
  6.     <name>hadoop.tmp.dir</name
  7.     <value>/root/hadoop-3.2.2/tmp</value> 
  8. </property> 

在其中8001端口号就意味着hdfs的根途径,此外hdfs-site.xml配备主要参数也十分多。

例如dfs.replication表明hdfs团本集,单机就设定1;dfs.namenode.http-address是NameNode web管理方法详细地址,能够查询hdfs的一些状况;dfs.datanode.address是DataNode的端口号;dfs.namenode.name.dir和dfs.namenode.data.dir表明Namenode和Datanodes的储存文件目录,默认设置承继于hadoop.tmp.dir值。

假如改动文件目录有关的主要参数,必须 恢复出厂设置hdfs:

 
  1. $ bin/hdfs namenode -format 

工作经验便是提议删掉dfs.namenode.data.dir下的文档,再恢复出厂设置。

一旦hdfs可以用,实际操作他们如同实际操作本地文件一样:

 
  1. #建立登录客户的网站根目录,拥有网站根目录,则不用特定hdfs://作为前缀 
  2. $ ./bin/hdfs dfs -mkdir  -p  "hdfs://localhost:8001/user/root" 
  3. $ ./bin/hdfs dfs -mkdir  -p  test2 
  4.  
  5. $ ./bin/hdfs dfs -put ~/test.log hdfs://localhost:8001/test 
  6. $ ./bin/hdfs dfs -put ~/test.log test2 
  7.  
  8. $ ./bin/hdfs dfs -ls test2 
  9. $ ./bin/hdfs dfs -cat  test2/test.log 

接下来说说MapReduce,关键包括map和reduce全过程,此外不能忘记shuffle,map相对性于从hdfs dataNodes解决数据信息,随后shuffle将关联的数据信息交到reduce开展解决。

运作MapReduce全过程非常简单:

 
  1. $ bin/hdfs dfs -mkdir input 
  2. $ bin/hdfs dfs -put etc/hadoop/*.xml input 
  3. # 将mapreduce每日任务实行的結果放进 hdfs output 文件目录中 
  4. $ bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.2.jar grep input output 'dfs[a-z.] '  
  5. bin/hdfs dfs -cat output/* 

初期的MapReduce即包括测算架构,又包括生产调度架构,较为松垮,例如想在当今群集运作此外一种测算每日任务,也不便捷了,因此之后从MapReduce里将生产调度架构提取出去,取名为Yarn,那样无论是MapReduce或是Spark只需合乎Yarn接口标准,就能被Yarn生产调度,MR和Spark专做一做分布式系统计算,等同于解耦了。

Yarn的框架图以下:

关键包含ResourceManager和NodeManager,此外为了更好地分布式系统计算NodeManager一般和HDFS的DataNodes运作在一起。

ResourceManager关键包括Scheduler和ApplicationsManager。

改动yarn-site.xml:

 
  1. <property> 
  2.     <name>yarn.nodemanager.aux-services</name
  3.     <value>mapreduce_shuffle</value> 
  4. </property> 
  5.  
  6. <property> 
  7.     <name>yarn.resourcemanager.webapp.address</name
  8.     <value>0.0.0.0:7088</value> 
  9. </property> 

在其中,mapreduce_shuffle表明生产调度MapReduce每日任务,7088 是Yarn的Web管理方法详细地址;自然Yarn也有许多的主要参数。

改动 mapred-site.xml:

 
  1. <property> 
  2.     <name>mapreduce.framework.name</name
  3.     <value>yarn</value> 
  4. </property> 

mapreduce.framework.name的值yarn表明MapReduce应用Yarn生产调度。

随后实行yarn生产调度:

 
  1. $ bin/yarn jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.2.jar grep input output 'dfs[a-z.] ' 

仅仅将上边的hadoop改动为yarn,但是結果检测,不管怎么写,yarn全是起效的,根据yarn Web UI可以看出去。

此外我是以root运作的,因此sbin下的一些sh文件要改动:

 
  1. HDFS_DATANODE_USER=root 
  2. HDFS_DATANODE_SECURE_USER=root 
  3. HDFS_NAMENODE_USER=root 
  4. HDFS_SECONDARYNAMENODE_USER=root 

最终的启动命令:

 
  1. $ ./sbin/start-all.sh 
  2. $ ./sbin/stop-all.sh 

参照连接:

https://kontext.tech/column/hadoop/265/default-ports-used-by-hadoop-services-hdfs-mapreduce-yarn

https://hadoop.apache.org/docs/r3.2.2/hadoop-project-dist/hadoop-common/SingleCluster.html

the end
免责声明:本文不代表本站的观点和立场,如有侵权请联系本站删除!本站仅提供信息存储空间服务。