M1版macos使用brew安装hadoop3
此篇文章记录博主使用M1版macos设备利用brew安装hadoop3,在本地安装伪分布式hadoop进行快速学习
【前提】 Homebrew安装
Homebrew是OSX中非常优秀的包管理工具,如果没安装,可以前往博主博客搜索Homebrew教程
配置 ssh localhost(免密登陆)
因为安装hadoop需要远程登入的功能,所以需要安装
ssh
工具,但Mac下自带ssh
,所以不需要另外安装ssh
。Macos X 只需要在
系统偏好设置-->共享-->远程登录
勾选就可以使用ssh了。
PS:如果没有执行远程登录勾选操作,在运行ssh localhost
会出现:mac ssh: connect to host localhost port 22: Connection refused。ssh免密设置:终端输入
ssh-keygen -t rsa -P ""
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys确认能否不输入口令就用ssh登录localhost:
ssh localhost
JDK 安装
- 查看java版本如果macos没有安装
java -version
Java
,可以登录官网下载并安装,也可以通过brew安装Java8
brew安装hadoop
安装命令
brew install hadoop |
查看安装目录
brew list hadoop |
配置Hadoop相关文件(此处伪分布式,还有单机模式和完全分布式模式)
修改
/opt/homebrew/Cellar/hadoop/3.3.3/libexec/etc/hadoop/hadoop-env.sh
【根据自己安装目录修改】,添加内容如下:
JAVA_HOME的目录根据实际情况修改export JAVA_HOME=/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
修改
/opt/homebrew/Cellar/hadoop/3.3.3/libexec/etc/hadoop/core-site.xml
,添加如下内容:<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/homebrew/Cellar/hadoop/hdfs/tmp</value>
<description>A base for other temporary directories.</description>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>PS:
fs.default.name
保存了NameNode
的位置,HDFS
和MapReduce
组件都需要用到它,这就是它出现在core-site.xml
文件中而不是hdfs-site.xml
文件中的原因。在该处配置HDFS的地址和端口号。修改
/opt/homebrew/Cellar/hadoop/3.3.3/libexec/etc/hadoop/mapred-site.xml
,添加如下内容:<configuration>
<!-- 变量mapred.job.tracker 保存了JobTracker的位置,因为只有MapReduce组件需要知道这个位置,所以它出现在mapred-site.xml文件中 -->
<property>
<name>mapred.job.tracker</name>
<value>localhost:9010</value>
</property>
<!--执行框架设置为hadoop yarn-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!--历史服务器配置-->
<property>
<name> mapreduce.jobhistory.address</name>
<value>localhost:10200</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>localhost:19888</value>
<description>历史服务器web界面</description>
</property>
</configuration>修改
/opt/homebrew/Cellar/hadoop/3.3.3/libexec/etc/hadoop/hdfs-site.xml
,添加如下内容:<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<!-- dfs.permissions 默认值 true;还有几种方法可以解决,此处省略 -->
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
</configuration>变量dfs.replication指定了每个HDFS默认备份方式通常为3, 由于我们只有一台主机和一个伪分布式模式的DataNode,将此值修改为1。
运行haoop
跳转到hadoop目录/opt/homebrew/Cellar/hadoop/3.3.3
【以实际目录为准】
启动hadoop之前需要格式化hadoop系统HDFS文件系统【已经格式化过的,就无需操作此步】
hadoop namenode -format |
进入/opt/homebrew/Cellar/hadoop/3.3.3/sbin
,执行
./start-all.sh |
或则分开启动:
./start-dfs.sh |
jps命令查看java进程
构建远程连接的环境
解压好hadoop3.1.3文件夹,将lib的文件复制到maven项目中
导入依赖包
- 将lib下面的文件夹多次依次导入 import files in one by one
- 打开lib下面的common,导入common下的lib包
- 将远程hadoop启动,然后调用函数查看是否能连接成功