在成功安装Hadoop后,还需要进行正确的配置才能投入使用。Hadoop的配置基本包括以下三种:单机配置(非分布式)、单节点上的伪分布式配置和分布式集群配置。单机配置就是Hadoop安装后默认的配置,即如上文安装后直接使用即可。但本次学习将进行单机伪分布式的配置。
参考教程,Hadoop 的配置文件位于/usr/local/hadoop/etc/hadoop/中,伪分布式需要修改2个配置文件:core-site.xml和hdfs-site.xml。Hadoop的配置文件是xml格式,每个配置以声明property的name和value的方式来实现。下面是具体的配置操作。
在终端中输入如下命令:
1 | cd /usr/local/hadoop/etc/hadoop |
正常情况下,打开后原配置文件应该是这样的内容:
1 | <configuration> |
将其改为:
1 | <configuration> |
修改好后保存,继续修改另一项。在终端中输入:
1 | gedit hdfs-site.xml |
将内容改为:
1 | <configuration> |
接着切换回Hadoop主路径,格式化修改好的配置即可:
1 | cd /usr/local/hadoop |
正常情况下终端会输出一长串信息,主要看有没有ERROR,如果没有ERROR并且输出中显示已成功,说明之前的配置没有问题。成功的话一般会有提示(例:Storage directory /usr/local/hadoop/tmp/dfs/name has been successfully formatted.)。
接下来就是启动进程,在终端中输入(仍然是/usr/local/hadoop路径下):
1 | ./sbin/start-dfs.sh |
Hadoop启动😆!真顺利啊😋。
正当我这么想的时候,输出报错了😨:
1 | Starting namenodes on [localhost] |
怎么回事,我不是在~/.bashrc文件里配置过Java环境变量了吗?
于是开始检查,输入
1 | echo $JAVA_HOME |
返回结果:
1 | /usr/lib/jdk1.8.0_301 |
啊这。于是又回去查教程,教程叫我修改Hadoop的环境变量文件。
1 | cd /usr/local/hadoop/etc/hadoop |
将里面有一行# export JAVA_HOME=,改成下面的内容(即修改成自己的安装路径):
1 | export JAVA_HOME=/usr/lib/jdk1.8.0_301 |
再重新启动一次:
1 | cd /usr/local/hadoop |
这次就成功了,终端中输出如下:
1 | Starting namenodes on [localhost] |
还可以在终端中输入jps命令,进一步检查各项进程是否都成功开启。如果没有,可能需要重新启动Hadoop再检查。成功示例如下(即包括NameNode、DataNode与SecondaryNameNode):
1 | 3584 SecondaryNameNode |
若要关闭Hadoop进程,在终端中输入如下命令即可:
1 | ./sbin/stop-dfs.sh |
至此Hadoop的伪分布式配置就完成了,不过还可以接着做几件事,比如将Hadoop相关路径添加到环境变量中。打开终端,输入:
1 | vim ~/.bashrc |
在文件中添加Hadoop路径:
1 | #hadoop |
更新配置文件:
1 | source ~/.bashrc |
这样就不需要每次都切换路径以启动Hadoop了,可以直接在终端中输入相关命令。例如,现在启动Hadoop,只需在终端中输入:
1 | start-dfs.sh |
输入下列命令可以在HDFS中创建hadoop用户:
1 | hdfs dfs -mkdir -p /user/hadoop |
要查看HDFS中的文件,可输入以下命令:
1 | hdfs dfs -ls |
当然,现在什么文件都没有上传,这个命令也不会有任何返回。
另外,参考教程,在启动Hadoop服务后,我们可以在浏览器中输入localhost:50070查看信息。
当然,如果你在输入了之后浏览器告诉你无法访问,也是正常的,因为我也打不开。怎么回事呢?
弄了半天也没头绪,最后查了一下,原来是Hadoop改端口号了。教程里的Hadoop版本是2.7.1,而本次安装的版本为3.3.1。因此,实际上应该输入localhost:9870才是正确的端口号。
最后是关闭Hadoop服务。在终端中输入:
1 | stop-dfs.sh |
正常情况下应该会返回类似以下输出:
1 | Stopping namenodes on [localhost] |