2020-09-18
系统环境
- 操作系统:linux ubuntu 18.04 LTS
- java: openjdk 11.0.8
安装hadoop
在apache hadoop官网上下载适合的版本,可以参考Hadoop2与Hadoop3的区别
这里选择3.1.4
下载后找个地方解压就好,很多教程里写的/usr/local/
下,但个人因为权限的原因,不太喜欢存到这个目录下,自己找个地方存下了就是了,我存的地方是~/software
配置环境变量vim ~/.bashrc
修改.bashrc
,$HADOOP_HOME就是解压后的文件夹的路径
1 | export HADOOP_HOME=~/software/hadoop-3.1.4/ |
再输入source ~/.bashrc
更新配置,hadoop version
查看是否安装成功
单机配置
默认情况下,Hadoop被配置成以非分布式模式运行的一个独立Java进程。这对调试非常有帮助。
下面的例子将已解压的$HADOOP_HOME/etc/hadoop/*.xml
作为输入(其它文本文件也行),查找并显示匹配给定正则表达式的条目。输出写入到指定的output目录。为了不污染源码,随便找个文件夹执行以下操作(大部分教程实在hadoop解压的文件夹下执行)
1 | mkdir input |
注: 目录下不能有output
文件夹,否则会报错
结果为:
配置成功!
伪分布配置
ssh配置:
如果ssh localhost
能正常连接,如下图所示
则可继续后续的步骤,其中可能出现报错:connect to host localhost port 22: Connection refused
,此时使用apt重新下载ssh即可sudo apt-get install openssh-server
,可以参考文章Ubuntu 安装配置SSH(ssh: connect to host localhost port 22: Connection refused问题的解决)
修改hadoop配置文件:
配置文件在$HADOOPHOME/etc/hadoop
文件夹下,要修改的是core-site.xml和hdfs-site.xml
配置文件具体参数的说明可以参考:修改core-site.xml配置文件,修改hdfs-site.xml配置文件
core-site.xml:
1 | <configuration> |
hdfs-site.xml:
1 | <configuration> |
修改之后执行hadoop namenode -format
格式化一个新的分布式文件系统,$HADOOP_HOME/sbin/start-dfs.sh
来开启namenode和datanode
执行时会发生报错:
这个是ssh秘钥出现了问题,参考普通用户ssh免密登陆完美解决(Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password))这篇文章,在~/.ssh
目录下执行cat ./id_rsa.pub >> ./authorized_keys
再次执行$HADOOP_HOME/sbin/start-dfs.sh
,仍然发生报错:
此时需要修改配置文件hadoop-env.sh
,最后一行添加(如果已经export JAVA_HOME
则需要修改):
1 | export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64/ |
JAVA_HOME即为环境变量中的JAVA_HOME,如果已经配置但忘记在哪儿了可以在终端执行echo $JAVA_HOME
获取
再次执行$HADOOP_HOME/sbin/start-dfs.sh
返回结果:
再输入jsp
列出了namenode和datanode说明配置成功