在Mac上配置Hadoop伪分布式娱乐环境

2024-05-14 05:38

本文主要是介绍在Mac上配置Hadoop伪分布式娱乐环境,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

去年我曾发文记录如何在Ubuntu上配置伪分布式版的Hadoop3娱乐环境:https://fuhailin.github.io/Hadoop-Install/ ,通过配置Hadoop娱乐环境你可以熟悉Hadoop的一些基本概念与操作方式,后来我的Dell被我玩坏了,也就没法在Ubuntu上顺畅娱乐了,后来一狠心入手了现在MacBook Pro,希望它能皮实耐操一点。今天我们继续在MacOS配置一个Hadoop、Spark娱乐环境,看看它能不能运行处理一些HelloWorld程序。

原文链接:https://fuhailin.github.io/Hadoop-on-MacOS/,并首发于我的同名公众号"赵大寳Note"(ID:StateOfTheArt)

0️⃣安装Java

截至目前(2020年02月28日10:54:46)Apache Hadoop 3.x 只支持到了 Java 8,具体支持信息你可以在这里查看:https://cwiki.apache.org/confluence/display/HADOOP/Hadoop+Java+Versions

Screen Shot 2020-02-28 at 10.55.32 AM

那我就安装jdk8吧,由于Oracle对JAVA的商业政策变化,目前Java8在Homebrew(关于Homebrew的安装查看我之前的博文:https://fuhailin.github.io/Essential-Apps/#Homebrew)里面被移除了,需要寻找开源版本的openjdk:

brew tap homebrew/cask-versions
brew cask install homebrew/cask-versions/adoptopenjdk8
java -version

Screen Shot 2020-02-28 at 9.33.40 AM

1️⃣安装Hadoop

我尝试了通过Homebrew安装Hadoop,但是它在自动安装时总是下载最新版本的jdk13,于是我就直接在官网(https://hadoop.apache.org/releases.html)下载编译好的二进制版Hadoop进行配置。这一步骤与我之前在Ubuntu配置(https://fuhailin.github.io/Hadoop-Install/)情况相同,Binary版本是编译好的二进制版本,可以直接解压安装,我将其解压在了/Users/vincent/opt/hadoop/;另一个包含 src 的则是 Hadoop 源代码,需要进行编译才可使用。

进入解压后的文件目录,测试一下是否正常:./bin/hadoop version

Screen Shot 2020-02-28 at 11.11.43 AM

可以看到打印了版本信息。

关注我的公众号"赵大寳Note"(ID:StateOfTheArt),不定期分享编程相关的有趣内容,查看往期精品搜集收藏一起学习。
关注公众号趙大寳Note,回复“激活函数”下载全部代码

2️⃣配置SSH免密登录

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

对于Mac系统,需要在计算机系统设置中打开远程登录许可。

3️⃣伪分布式配置

Hadoop 可以在单节点上以伪分布式的方式运行,Hadoop 进程以分离的 Java 进程来运行,节点既作为 NameNode 也作为 DataNode,同时,读取的是 HDFS 中的文件。

Hadoop 的配置文件位于 ./etc/hadoop/ 中,伪分布式需要修改2个配置文件 core-site.xml 和 hdfs-site.xml 。Hadoop的配置文件是 xml 格式,每个配置以声明 property 的 name 和 value 的方式来实现。

输入/usr/libexec/java_home可以查看JAVA_HOME路径。

  1. JAVA_HOME的路径、HADOOP_HOMEHADOOP_CONF_DIR添加到hadoop-env.sh文件,修改vim ./etc/hadoop/hadoop-env.sh:

Screen Shot 2020-02-28 at 11.22.34 AM

  1. 修改配置文件 ./etc/hadoop/core-site.xml:
<configuration><property><name>hadoop.tmp.dir</name><value>/Users/vincent/opt/hadoop/hadoop-3.1.3/tmp</value><description>Abase for other temporary directories.</description></property><property><name>fs.defaultFS</name><value>hdfs://localhost:9000</value></property>
</configuration>
  1. 修改配置文件 ./etc/hadoop/hdfs-site.xml
<configuration><property><name>dfs.replication</name><value>1</value></property><property><name>dfs.namenode.name.dir</name><value>/Users/vincent/opt/hadoop/hadoop-3.1.3/tmp/dfs/name</value></property><property><name>dfs.datanode.data.dir</name><value>/Users/vincent/opt/hadoop/hadoop-3.1.3/tmp/dfs/data</value></property>
</configuration>

4️⃣启动与停止Hadoop

第一次启动hdfs需要格式化./bin/hdfs namenode -format

Screen Shot 2020-02-28 at 10.41.18 AM

启动Hadoop./sbin/start-dfs.sh

启动完成后,可以通过命令 jps 来判断是否成功启动,若成功启动则会列出如下进程: “NameNode”、”DataNode” 和 “SecondaryNameNode”

Screen Shot 2020-02-28 at 10.42.51 AM

成功启动后,可以访问 HDFS的Web 界面 http://localhost:9870 查看 NameNode 和 Datanode 信息,还可以在线查看 HDFS 中的文件。

Screen Shot 2020-02-28 at 10.49.38 AM

停止Hadoop./sbin/stop-dfs.sh

5️⃣配置Hadoop环境变量简化命令

给hadoop配置系统环境变量,将下面代码添加到~/.bash_profile文件:

# HADOOP CONFIG
export HADOOP_HOME=/Users/vincent/opt/hadoop/hadoop-3.1.3
export CLASSPATH=$($HADOOP_HOME/bin/hadoop classpath):$CLASSPATH
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

执行source ~./bash_profile使设置生效

6️⃣运行Hadoop伪分布式实例

由于前面已经配置了Hadoop的环境变量,Hadoop和HDFS的命令已经包含在了系统当中,HDFS有三种shell命令方式:

  • hadoop fs : 适用于任何不同的文件系统,比如本地文件系统和HDFS文件系统
  • hadoop dfs : 只能适用于HDFS文件系统
  • hdfs dfs : 跟hadoop dfs的命令作用一样,也只能适用于HDFS文件系统

估计圆周率PI的值:

cd $HADOOP_HOME
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar pi 2 5

运行结果如下:

Job Finished in 1.441 seconds
Estimated value of Pi is 3.60000000000000000000

计算wordcount:

  • 创建input目录和output目录
    input作为输入目录,output目录作为输出目录
cd $HADOOP_HOME
mkdir input 
mkdir output
  • 在input文件夹中创建两个测试文件file1.txt和file2.txt
cd input
echo 'hello world' > file1.txt
echo 'hello hadoop' > file2.txt
  • 把测试input文件上传到hdfs中
hadoop fs -put ./input input

复制完成后,可以通过如下命令查看HDFS文件列表:

hdfs dfs -ls input

运行wordcount

hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount ./input ./output

查看output的结果文件

hadoop fs -tail output/part-r-00000

得到的结果是:

  • hadoop 1
  • hello 2
  • world 1

伪分布式运行 MapReduce 作业的方式跟单机模式相同,区别在于伪分布式读取的是HDFS中的文件(可以将单机步骤中创建的本地 input 文件夹,输出结果 output 文件夹都删掉来验证这一点)。

hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep input output 'dfs[a-z.]+'

查看运行结果的命令(查看的是位于 HDFS 中的输出结果):

hdfs dfs -cat output/*

结果如下,注意到刚才我们已经更改了配置文件,所以运行结果不同。

我们也可以将运行结果取回到本地:

rm -r ./output    # 先删除本地的 output 文件夹(如果存在)
hdfs dfs -get output ./output     # 将 HDFS 上的 output 文件夹拷贝到本机
cat ./output/*

Hadoop 运行程序时,输出目录不能存在,否则会提示错误 “org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory hdfs://localhost:9000/user/hadoop/output already exists” ,因此若要再次执行,需要执行如下命令删除 output 文件夹:

hdfs dfs -rm -r output    # 删除 output 文件夹

若要关闭 Hadoop,则运行
./sbin/stop-dfs.sh
下次启动 hadoop 时,无需进行 NameNode 的初始化,只需要运行 ./sbin/start-dfs.sh 就可以!

References:

  1. Hadoop安装教程_单机/伪分布式配置_Hadoop2.6.0/Ubuntu14.04

  2. Ubuntu16.04 下 hadoop的安装与配置(伪分布式环境)

  3. Install a Hadoop Cluster on Ubuntu 18.04.1

  4. Installing Hadoop on Mac:https://medium.com/beeranddiapers/installing-hadoop-on-mac-a9a3649dbc4d

  5. Ubuntu18.04下Hadoop 3的安装与配置(伪分布式环境):https://fuhailin.github.io/Hadoop-Install/

这篇关于在Mac上配置Hadoop伪分布式娱乐环境的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/987898

相关文章

一篇文章彻底搞懂macOS如何决定java环境

《一篇文章彻底搞懂macOS如何决定java环境》MacOS作为一个功能强大的操作系统,为开发者提供了丰富的开发工具和框架,下面:本文主要介绍macOS如何决定java环境的相关资料,文中通过代码... 目录方法一:使用 which命令方法二:使用 Java_home工具(Apple 官方推荐)那问题来了,

Nginx分布式部署流程分析

《Nginx分布式部署流程分析》文章介绍Nginx在分布式部署中的反向代理和负载均衡作用,用于分发请求、减轻服务器压力及解决session共享问题,涵盖配置方法、策略及Java项目应用,并提及分布式事... 目录分布式部署NginxJava中的代理代理分为正向代理和反向代理正向代理反向代理Nginx应用场景

Nginx搭建前端本地预览环境的完整步骤教学

《Nginx搭建前端本地预览环境的完整步骤教学》这篇文章主要为大家详细介绍了Nginx搭建前端本地预览环境的完整步骤教学,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录项目目录结构核心配置文件:nginx.conf脚本化操作:nginx.shnpm 脚本集成总结:对前端的意义很多

Linux云服务器手动配置DNS的方法步骤

《Linux云服务器手动配置DNS的方法步骤》在Linux云服务器上手动配置DNS(域名系统)是确保服务器能够正常解析域名的重要步骤,以下是详细的配置方法,包括系统文件的修改和常见问题的解决方案,需要... 目录1. 为什么需要手动配置 DNS?2. 手动配置 DNS 的方法方法 1:修改 /etc/res

mysql8.0.43使用InnoDB Cluster配置主从复制

《mysql8.0.43使用InnoDBCluster配置主从复制》本文主要介绍了mysql8.0.43使用InnoDBCluster配置主从复制,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录1、配置Hosts解析(所有服务器都要执行)2、安装mysql shell(所有服务器都要执行)3、

Java 线程池+分布式实现代码

《Java线程池+分布式实现代码》在Java开发中,池通过预先创建并管理一定数量的资源,避免频繁创建和销毁资源带来的性能开销,从而提高系统效率,:本文主要介绍Java线程池+分布式实现代码,需要... 目录1. 线程池1.1 自定义线程池实现1.1.1 线程池核心1.1.2 代码示例1.2 总结流程2. J

java程序远程debug原理与配置全过程

《java程序远程debug原理与配置全过程》文章介绍了Java远程调试的JPDA体系,包含JVMTI监控JVM、JDWP传输调试命令、JDI提供调试接口,通过-Xdebug、-Xrunjdwp参数配... 目录背景组成模块间联系IBM对三个模块的详细介绍编程使用总结背景日常工作中,每个程序员都会遇到bu

JDK8(Java Development kit)的安装与配置全过程

《JDK8(JavaDevelopmentkit)的安装与配置全过程》文章简要介绍了Java的核心特点(如跨平台、JVM机制)及JDK/JRE的区别,重点讲解了如何通过配置环境变量(PATH和JA... 目录Java特点JDKJREJDK的下载,安装配置环境变量总结Java特点说起 Java,大家肯定都

linux配置podman阿里云容器镜像加速器详解

《linux配置podman阿里云容器镜像加速器详解》本文指导如何配置Podman使用阿里云容器镜像加速器:登录阿里云获取专属加速地址,修改Podman配置文件并移除https://前缀,最后拉取镜像... 目录1.下载podman2.获取阿里云个人容器镜像加速器地址3.更改podman配置文件4.使用po

Vue3 如何通过json配置生成查询表单

《Vue3如何通过json配置生成查询表单》本文给大家介绍Vue3如何通过json配置生成查询表单,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录功能实现背景项目代码案例功能实现背景通过vue3实现后台管理项目一定含有表格功能,通常离不开表单