大数据-Hadoop 伪分布式配置(已配置成功)

Hadoop 可以在单节点上以伪分布式的方式运行,Hadoop 进程以分离的 Java 进程来运行,节点既作为 NameNode 也作为 DataNode,同时,读取的是 HDFS 中的文件。
Hadoop 的配置文件位于 /usr/local/hadoop/etc/hadoop/ 中,伪分布式需要修改2个配置文件 core-site.xml 和 hdfs-site.xml 。Hadoop的配置文件是 xml 格式,每个配置以声明 property 的 name 和 value 的方式来实现

1.进入 sudo gedit /usr/local/hadoop/etc/hadoop/hadoop-env.sh

添加:export JAVA_HOME=/usr/local/java/jdk1.8.0_91

2.打开core-site.xml文件;

 sudo gedit /usr/local/hadoop/etc/hadoop/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>

3.打开hdfs-site.xml文件;

 sudo gedit /usr/local/hadoop/etc/hadoop/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>

Hadoop配置文件说明

Hadoop 的运行方式是由配置文件决定的(运行 Hadoop 时会读取配置文件),因此如果需要从伪分布式模式切换回非分布式模式,需要删除 core-site.xml 中的配置项。

此外,伪分布式虽然只需要配置 fs.defaultFS 和 dfs.replication 就可以运行(官方教程如此),不过若没有配置 hadoop.tmp.dir 参数,则默认使用的临时目录为 /tmp/hadoo-hadoop,而这个目录在重启时有可能被系统清理掉,导致必须重新执行 format 才行。所以我们进行了设置,同时也指定 dfs.namenode.name.dir 和 dfs.datanode.data.dir,否则在接下来的步骤中可能会出错。

配置完成后,执行 NameNode 的格式化:

  
  
  1. ./bin/hdfs namenode -format
Shell 命令

成功的话,会看到 “successfully formatted” 和 “Exitting with status 0” 的提示,若为 “Exitting with status 1” 则是出错。

执行namenode格式化执行namenode格式化

如果在这一步时提示 Error: JAVA_HOME is not set and could not be found. 的错误,则说明之前设置 JAVA_HOME 环境变量那边就没设置好,请按教程先设置好 JAVA_HOME 变量,否则后面的过程都是进行不下去的。

接着开启 NameNode 和 DataNode 守护进程。

  
  
  1. ./sbin/start-dfs.sh
Shell 命令

若出现如下SSH提示,输入yes即可。

启动Hadoop时的SSH提示启动Hadoop时的SSH提示

启动时可能会出现如下 WARN 提示:WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable该 WARN 提示可以忽略,并不会影响正常使用(该 WARN 可以通过编译 Hadoop 源码解决)。

启动 Hadoop 时提示 Could not resolve hostname

如果启动 Hadoop 时遇到输出非常多“ssh: Could not resolve hostname xxx”的异常情况,如下图所示:

启动Hadoop时的异常提示启动Hadoop时的异常提示

这个并不是 ssh 的问题,可通过设置 Hadoop 环境变量来解决。首先按键盘的 ctrl + c 中断启动,然后在sudo gedit  ~/.bashrc 中,增加如下两行内容(设置过程与 JAVA_HOME 变量一样,其中 HADOOP_HOME 为 Hadoop 的安装目录):

  
  
  1. export HADOOP_HOME=/usr/local/hadoop
  2. export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
Shell

保存后,务必执行 source ~/.bashrc 使变量设置生效,然后再次执行 ./sbin/start-dfs.sh 启动 Hadoop。

注意:(非必须项)执行source /etc/profile

启动完成后,可以通过命令 jps 来判断是否成功启动,若成功启动则会列出如下进程: “NameNode”、”DataNode” 和 “SecondaryNameNode”

(如果 SecondaryNameNode 没有启动,请运行 sbin/stop-dfs.sh 关闭进程,然后再次尝试启动尝试)。如果没有 NameNode 或 DataNode ,那就是配置不成功,请仔细检查之前步骤,或通过查看启动日志排查原因。

通过jps查看启动的Hadoop进程通过jps查看启动的Hadoop进程

此外,若是 DataNode 没有启动,可尝试如下的方法(注意这会删除 HDFS 中原有的所有数据,如果原有的数据很重要请不要这样做):

   
   
  1. # 针对 DataNode 没法启动的解决方法
  2. ./sbin/stop-dfs.sh # 关闭
  3. rm -r ./tmp # 删除 tmp 文件,注意这会删除 HDFS 中原有的所有数据
  4. ./bin/hdfs namenode -format # 重新格式化 NameNode
  5. ./sbin/start-dfs.sh # 重启
Shell 命令

成功启动后,可以访问 Web 界面 http://localhost:50070 查看 NameNode 和 Datanode 信息,还可以在线查看 HDFS 中的文件。

Hadoop的Web界面Hadoop的Web界面



  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值