mac搭建hadoop3.1.1伪分布模式 全网最详细教程!

最近实习使用到了hadoop,那今天就出一个使用mac搭建hadoop3.1.1的详细教程。帮助大家避免安装的坑!

首先需要安装一个mac神器:Homebrew,相信使用mac的童鞋都知道吧!Homebrew是一个包管理器,是Mac上的软件安装管理工具,类似于Linux中的apt-get,拥有安装、卸载、更新、查看等很多实用的功能。简单的一条指令,就可以实现包管理,十分方便。

1、Homebrew安装

可以通过如下代码进行安装:

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

安装成功后可以通过brew doctor来查看是否安装成功。

2、ssh免密登录配置

首先我们打开系统偏好设置-->共享,进入到如下页面:

我们将远程登录、所有用户勾选,然后打开终端,输入:

ssh localhost

这时会让你输入密码,输入密码后显示如下登陆成功页面:

 

但是hadoop中需要免密登录,比如在启动datanode、namenode时都需要免密登录,如果不设置,则会出现权限不允许(Permission denied)的错误提示,导致无法启动DataNode等。

使用如下代码设置ssh免密登录:

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys

接下来在使用ssh localhost命令,我们会发现不用输入密码,直接可以登录。 

3、hadoop安装

前提准备:在安装hadoop之前确保你的电脑中有jdk,如果没有,可以通过如下代码安装:

brew install java

这里说明一下java版本的问题:Hadoop 2.7 以及后续版本需要 Java 7 以上版本,如果你电脑中的java是低于7的版本,那就请你去更新喽!

可以使用java -version查看jdk版本,我的java版本如下:

当然如果你使用brew安装,那大可不必担心版本问题,因为使用brew安装的都是最新的版本。

使用如下代码进行hadoop安装:

brew install hadoop

这里还有一点说明的地方,如果你的电脑中没有jdk,那么你使用 brew install hadoop安装时会提示你先安装jdk后在安装hadoop,所以java版本问题我们不用太担心。

我安装的是hadoop最新版本,hadoop3.1.1,大小:770MB,下载好默认存放的位置是:

/usr/local/Cellar/hadoop/3.1.1

使用brew安装会比在官网上下载快很多。(如果你不想安装了,那可以通过brew uninstall hadoop进行卸载,卸载的也非常干净)

4、伪分布式配置

当大家进行完上一步骤的安装后,恭喜你,你已经安装好了hadoop的单机模式!你可以在终端中输入如下代码进行查看:

hadoop

查看结果为:

这里我只截取了一部分图片!

单机模式是hadoop最简单的模式,他没有hdfs,而是直接使用本地操作系统的文件系统,不擅长处理大数据量。因此我们需要进行搭建伪分布式!

伪分布模式需要我们对文件进行配置。下面配置的文件均在 /usr/local/Cellar/hadoop/3.1.1/libexec/etc/hadoop 路径中。

a.hadoop-env.sh配置

当你打开你的hadoop-env.sh时,这部分是备注释的,也就是前面有一个#,那我们需要去掉#,并将自己的java位置放到我用红框框圈删的地方!查看自己电脑java存放位置使用:

/usr/libexec/java_home

将路径复制过去即可。

b.core-site.xml配置

将core-site.xml中代码修改为:

<configuration>
	<property>
 		<name>fs.defaultFS</name>
 		<value>hdfs://localhost:9000</value>
 	</property>
</configuration>

c.hdfs-site.xml配置

将hdfs-site.xml中代码修改为:

<configuration>
	<property>
 		<name>dfs.replication</name>
 		<value>1</value>
 	</property>	 
</configuration>

d.mapred-site.xml配置

将mapred-site.xml中代码修改为:

<configuration>
    <property>
         <name>mapreduce.framework.name</name>
         <value>yarn</value>
     </property>
</configuration>

如果文件后缀是 .xml.example,改为 .xml

e.yarn-site.xml配置

将yarn-site.xml中代码修改为:

<configuration>
    <property> 
        <name>yarn.nodemanager.aux-services</name> 
        <value>mapreduce_shuffle</value> 
    </property>
    <property> 
        <name>yarn.nodemanager.env-whitelist</name>
                  <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
    </property>
</configuration>

5、运行

首先对文件系统进行格式化,先进入到 /usr/local/Cellar/hadoop/3.1.1/libexec/bin 路径中,输入代码:

hdfs namenode -format

输入之后会出现很多信息,在最后会看到:

然后进行启动NameNode和datanode

进入 /usr/local/Cellar/hadoop/3.1.1/libexec/sbin 路径中,输入

start-dfs.sh

这时候NameNode和DataNode都已经启动成功了,我们可以在网页中看到Overview页面了!

NameNode - http://localhost:9870

接下来启动 ResourceManager 和 NodeManager:

还是在  /usr/local/Cellar/hadoop/3.1.1/libexec/sbin 路径中,输入

start-yarn.sh

启动后可以在浏览器中查看All Applications 界面。

ResourceManager - http://localhost:8088

补充:如果你在输入以上两个代码时出现了

不要怕,这是由于你没有配置hadoop的环境变量导致的,无关紧要,我们可以在命令前加上sh,如下

sh start-dfs.sh
sh start-yarn.sh

这样,就可以顺利启动它们了。

我们可以通过jps查看进程: 

可以发现所有的进程都已经在运行了!!!

补充:  如果你在启动Nodemanager和ResourceManager发生了错误,导致使用jps查看进程时出现:

不要担心,这是java版本的问题,因为自从jdk9以后默认禁止访问javax.*API,解决办法:我们可以在路径  /usr/local/Cellar/hadoop/3.1.1/libexec/etc/hadoop  下找到文件 yarn-env.sh 

在文件中找到:

#export YARN_RESOURCEMANAGER_OPTS=

#export YARN_NODEMANAGER_OPTS=

将其修改为:

export YARN_RESOURCEMANAGER_OPTS="--add-modules=ALL-SYSTEM"
export YARN_NODEMANAGER_OPTS="--add-modules=ALL-SYSTEM"

然后在执行 sh start-yarn.sh 重新启动就OK了。

当你不再使用hadoop时,可以进行关闭,在  /usr/local/Cellar/hadoop/3.1.1/libexec/sbin  路径中输入
 

sh stop-all.sh

可以关闭所有的进程。

本教程亲测有效,我也是刚刚搭建好,由于网上的教程有些地方不详细,导致搭建过程中出现问题,本教程相对详细,如果大家有什么疑问,请在评论区留言,欢迎一起讨论!

此文章作者原创,如有转载,请注明出处:https://blog.csdn.net/liaoningxinmin/article/details/85992752

猜你喜欢

转载自blog.csdn.net/liaoningxinmin/article/details/85992752