IntelliJ IDEA2018配置Hadoop2.7.2阅读环境并运行伪分布式

1. 下载hadoop源码并编译

① 下载Hadoop2.7.2源码。
下载地址: https://archive.apache.org/dist/hadoop/core/hadoop-2.7.2/ ,选择hadoop-2.7.2-src.tar.gz, 点击下载。
对下载好的压缩包,使用如下命令进行解压缩:

$ sudo tar -zxvf hadoop-2.7.2-src.tar.gz

将解压缩的源码包,复制到/usr/local目录下:

$ sudo cp -rf hadoop-2.7.2-src /usr/lcoal

② 根据hadoop-2.7.2-srcBUILDING.txt中的要求,配置好编译环境。

      可以参考另一篇博文hadoop源码编译环境配置

③ 编译Hadoop2.7.2源码
进入/usr/local/hadoop-2.7.2-src进行源码编译,编译命令如下:

$ mvn clean package -Pdist,native -DskipTests -Dtar

编译成功,信息显示如下(后面部分,不完整):
在这里插入图片描述

2. 配置IntelliJ IDEA2018的maven环境

① maven路径配置
(1)未打开项目,通过configure–>Settings打开;如果已经打开了项目,可以通过File–>Settings打开,如图:
在这里插入图片描述
(2)在搜索框中输入maven,选择左侧Maven选项,在Maven home directory:中,选择自己刚刚配置好的maven home路径:
在这里插入图片描述
User setting file:中,选择刚刚配置好的,本机的settings.xml文件:
在这里插入图片描述
下面的Local repository:,idea会自动检测,如上图所示。
② maven的JDK配置
选择左侧Importing选项,设置JDK for importer,改为刚刚安装的jdk home路径(也可以忽略这一步):
在这里插入图片描述

3. 以maven方式导入编译好的hadoop源码:

(1)选择Import Project,导入已经存在的hadoop项目:
在这里插入图片描述
(2)选择编译好的hadoop源码(自己这里叫hadoop-plugin),点击OK:
在这里插入图片描述
(3)在Import project from external model中选择Maven(一般idea已经自动选择好了),点击OK:
在这里插入图片描述
(4)接下来的窗口中,不需要选择任何选项,直接点击Next:
在这里插入图片描述
(5)接下来的窗口中,不需要选择任何选项,直接点击Next:
在这里插入图片描述
(6)接下来的窗口中,org.apache.hadoop:hadoop-main:2.7.2已经被选中,直接点击Next:
在这里插入图片描述
(7)选择配置好的JDK版本(Name)以及路径(JDK home path),点击Next:
在这里插入图片描述
(8)首先检查文件路径是否正确,再点击Finish:
在这里插入图片描述
等待idea自己完成导入,就已经OK了。

4. 开启hadoop伪分布式环境:

hadoop分布式环境需要Namenode、Datanode、Resourcemanager、Nodemanager四个基本进程,通过找到Namenode.javaDatanode.javaResourcemanager.javaNodemanager.java中的main()函数,开启hadoop伪分布式环境。
① 开启Namenode进程
(1)通过快捷键Ctrl+N,搜索namenode,找到位于包org.apache.hadoop.hdfs.server.namenode中的NameNode类,点击打开:
在这里插入图片描述
(2)在代码框中,右键选择Debug 'NameNode.main()',通过debug的方式开启Namenode进程:
build完成后报错如下:
在这里插入图片描述
解决方法: 这是因为不同模块之间的依赖未添加,找不到的类,属于hadoop-common模块。

  • 点击菜单File-->Project structure,在左侧栏选择Module,在中间的列表中选择hadoop-hdfs,在中上位置的tab中,选择Dependencies。在中间的依赖列表中,找到hadoop-common,将其scope更改为Provided
    在这里插入图片描述

  • 勾选hadoop-common,点击Apply,发现弹出错误:
    在这里插入图片描述

  • 重新在中间栏找到hadoop-streaming,选择Source,点击最右边的/../conf后面的x,在弹出的窗口中点击Yes:
    在这里插入图片描述

  • 再重新回到hadoop-hdfs,重新勾选hadoop-common点击Apply,再点击OK即可。

  • 再点击菜单栏Run-->Edit configuration,在出现的窗口中,勾选Include dependencies with 'Provided' scope,点击OK,重新以debug方式运行NameNode.main()
    在这里插入图片描述
    (3)重新运行以后,发现NameNode进程启动成功,但是自动退出。这是因为首次运行NameNode,需要进行格式化(format):
    在这里插入图片描述
    解决方法: 点击菜单栏Run-->Edit configuration,在出现的窗口中,在Program arguments处添加-format,点击OK,再重新debug运行:
    在这里插入图片描述
    debug运行的结果如下,因为我这里已经格式化过,所以需要我自己决定是否重新格式化:
    在这里插入图片描述
    (4)点击菜单栏Run-->Edit configuration,在出现的窗口中,在Program arguments处去除刚刚添加的-format,点击OK,再重新debug运行。发现NameNode进程还是启动成功,但是又自动退出:

解决方法: 找到hadoop-hdfs-->src-->main,右键单击,选择Mark Directory as-->Source root,设置好后,main目录文件夹图标变成下图所示:
在这里插入图片描述
(5)重新debug运行,发现NameNode进程启动成功,并未退出!
在这里插入图片描述
② 开启Datanode进程
(1)通过快捷键Ctrl+N,搜索datanode,找到位于包org.apache.hadoop.hdfs.server.datanode中的DataNode类,点击打开:
在这里插入图片描述

(2)在代码框中,右键选择Debug 'DataNode.main()',通过debug的方式开启DataNode进程:
build报错如下:
在这里插入图片描述
解决方法: 点击菜单栏Run-->Edit configuration,在出现的窗口中,勾选Include dependencies with 'Provided' scope,点击OK,重新以debug方式运行DataNode.main()
在这里插入图片描述
(3)由于自己已经格式化过namenode,再次格式化namenode之前,之前应该删除/tmp目录下的所有文件,我的是/tmp/hadoop-lucy
原因: 当我们执行文件系统格式化时,会在namenode数据文件夹(即配置文件中dfs.name.dir在本地系统的路径)中保存一个current/VERSION文件,记录namespaceID,标志了所有格式化的namenode版本。如果我们频繁的格式化namenode,那么datanode中保存(即dfs.data.dir在本地系统的路径)的current/VERSION文件只是你地第一次格式化时保存的namenode的ID,因此就会造成namenode和datanode之间的ID不一致。

③ 开启ResourceManager进程
(1)通过快捷键Ctrl+N,搜索resourcemanager,找到位于包org.apache.hadoop.yarn.server.resourcemanager中的ResourceManager类,点击打开:
在这里插入图片描述

(2)在代码框中,右键选择Debug 'ResourceManager.main()',通过debug的方式开启ResourceManager进程:
build报错如下:
在这里插入图片描述
解决方法: 点击菜单栏Run-->Edit configuration,在出现的窗口中,勾选Include dependencies with 'Provided' scope,点击OK,重新以debug方式运行ResourceManager.main()
在这里插入图片描述

④ 开启NodeManager进程
(1)通过快捷键Ctrl+N,搜索nodemanager,找到位于包org.apache.hadoop.yarn.server.nodemanager中的NodeManager类,点击打开:
在这里插入图片描述
(2)在代码框中,右键选择Debug 'NodeManager.main()',通过debug的方式开启NodeManager进程:
build报错如下:
在这里插入图片描述
解决方法: 点击菜单栏Run-->Edit configuration,在出现的窗口中,勾选Include dependencies with 'Provided' scope,点击OK,重新以debug方式运行NodeManager.main()
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值