设置Hadoop环境变量:
1、使用gedit ~/.bash命令打开文本编辑器
2、在头部加入:# Hadoop Environment Variables
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
3、使配置变量生效:
source ~/.bashrc
Hadoop的配置文件位于/usr/local/hadoop/etc/hadoop中,配置伪分布需要修改两个配置文件core-site.xml和hdfs-site.xml。Hadoop的配置文件是 xml 格式,每个配置以声明 property 的 name 和 value 的方式来实现。
linux下gedit使用方法:文件路径为:gedit ./etc/hadoop/core-site.xml
core-site.xml修改为:
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
hdfs-site.xml修改为:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/data</value>
</property>
</configuration>
配置完成后,执行namenode格式化,使用命名:./bin/hdfs namenode -format
结果若为Exitting with status 0 格式化成功
完成后,使用命令./sbin/start-dfs.sh开启守护进程
启动完成后,使用jps命令查看是否成功启动,此时应有 “NameNode”、”DataNode”和“SecondaryNameNode
”还有jps三个,若没有其中的任何一个都为启动失败,需要仔细检查之前的步骤中是否有错误,并可以根据日志文件判断到底是哪出现了问题,
- 启动时会提示形如 “dblab: starting namenode, logging to /usr/local/hadoop/logs/hadoop-hadoop-namenode-dblab.out”,其中 dblab 对应你的主机名,但启动的日志信息是记录在 /usr/local/hadoop/logs/hadoop-hadoop-namenode-dblab.log 中,所以应该查看这个后缀为 .log 的文件;
- 每一次的启动日志都是追加在日志文件之后,所以得拉到最后面看,看下记录的时间就知道了。
- 一般出错的提示在最后面,也就是写着 Fatal、Error 或者 Java Exception 的地方。
- 可以在网上搜索一下出错信息,看能否找到一些相关的解决方法。
可以直接根据路径去找到这个文件,也可以使用指令cat 完成打开
我出的问题主要有:
1、配置文件中修改因为粗心,有的地方路径没有打对,导致secondarynode没有启动起来,后来仔细对照后完成了secondaryname的启动。
2、在secondarynamenode启动起来后,发现datanode不能启动起来了,解决方法见https://blog.csdn.net/u013310025/article/details/52796233
原因可能为在调secondarynamenode的时候多次的格式化了namenode,导致namenode和datanode的clusterid不一致。
更详细的安装及配置请查看林子雨老师的教程。