ubuntu下搭建hadoop伪分布式模式

搭建的单机操作系统配置如下图:
ubuntu下搭建hadoop伪分布式模式
 

第一步为设置ssh免密码登陆(如果没有ssh,则需要提前安装ssh, 终端下输入命令: sudo apt-get  install openssh-server)

终端下执行:ssh-keygen -t rsa 一路回车就行,该命令会在你的当前用户下生成一个.ssh文件夹,下面包含两个文件 id_rsa和id_rsa.pub两个文件

接着复制id_rsa.pub 到.ssh目录下的authorized_keys,执行命令cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys即可

验证:本机下输入 ssh 本机IP或者别名 就能免密码登陆成功

第二步 修改hostname以及设置ip与hostname(主机名)绑定(如果是用localhost 配置,则掉过这一步骤)

ubuntu下hostname是在文件/etc/hostname下配置的,打开/etc/hostname,修改为主机名为hadoopserver,修改为hadoopserver后,需要立即修改ip与hostname的绑定,编辑/etc/hosts 注释掉先前的主机名对应的ip地址(必须做),添加 192.168.1.234(你的Ip地址) hadoopserver 配置完成后需要重启

验证:

终端输入hostname -i 显示你配置的主机名;ping 主机名 会进行解析为IP地址(对应正确即为配置正确)

第三步 安装hadoop,官网上面下载hadoop1.2.1版本,下载完成后解压缩,

在用户目录下建立software文件夹,在该文件夹下建立到解压缩后的hadoop目录的软链接

修改hadoop目录下conf目录下的hadoop-env.sh文件,制定本机的java运行环境

export JAVA_HOME=your java 运行环境目录(如果你设置了环境变量,则不用修改该文件)

接着修改3个文件: core-site.xml hdfs-site.xml mapred-site.xml文件,三个文件均在conf下

core-site.xml

core-site.xml简单配置为

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>
   <property>
      <name>fs.default.name</name>
      <value>hdfs://hadoopserver(可以配置为localhost,或者你上步骤配置的主机名):9000</value>
   </property>
</configuration>

 hdfs-site.xml简单配置为:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>
   <property>
      <name>dfs.replication</name>
      <value>1</value>
   </property>

   <property>
      <name>dfs.permissions</name>
      <value>false</value>
   </property>

</configuration>

 mapred-site.xml配置为:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>
   <property>
    <name>mapred.job.tracker</name>
    <value>hadoopserver(此处可以是localhost 或者你配置的主机名):9001</value>
   </property>
</configuration>

第四步 启动hadoop

启动hadoop 首先第一步要进行格式化 切换到hadoop目录 执行 bin/hadoop namenode -format(每次启动不需要都执行格式化,但是如果配置太简单,则系统重启后,启动hadoop则需要重新进行格式化)

出现如下,则格式化成功

14/12/21 22:54:31 INFO namenode.FSEditLog: closing edit log: position=4, editlog=/tmp/hadoop-fengfu/dfs/name/current/edits
14/12/21 22:54:31 INFO namenode.FSEditLog: close success: truncate to 4, editlog=/tmp/hadoop-fengfu/dfs/name/current/edits
14/12/21 22:54:32 INFO common.Storage: Storage directory /tmp/hadoop-fengfu/dfs/name has been successfully formatted.
14/12/21 22:54:32 INFO namenode.NameNode: SHUTDOWN_MSG: 
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at hadoopserver/192.168.1.234
************************************************************/

 接下来执行bin/start-all.sh 启动Hadoop

命令执行完成后,可以使用java的jps查看是否全部启动起来,如下

fengfu@hadoopserver:~/software/hadoop-1.2.1$ jps
5694 SecondaryNameNode
6083 Jps
5965 TaskTracker
5806 JobTracker
5529 DataNode
5376 NameNode

 或者浏览器上验证:

http://hadoopserver:50070 

http://hadoopserver:50030 

如果没有启动起来,可以到hadoop目录下的logs目录下查看输出日志,进行调试(当然可以配置logs的位置,不一定在Logs目录下)

本人配置碰到的问题

1 ubuntu下有默认的主机名,而我使用了hadoopserver,虽然我配置了/etc/hosts (ubuntu下主机名绑定的ip为127.0.1.1)但是没有修改hostname导致进行格式化的时候出问题(没有报错误,只是在eclipse下配置Hadoop的时候老是出错),因为格式化的时候默认使用的是主机名,如下图:

STARTUP_MSG: Starting NameNode
STARTUP_MSG:   host = hadoopserver/192.168.1.234
STARTUP_MSG:   args = [-format]
STARTUP_MSG:   version = 1.2.1
STARTUP_MSG:   build = https://svn.apache.org/repos/asf/hadoop/common/branches/b

 2 系统每次启动后,都启动不起来hadoop,主要就是因为没有进行格式化,而系统重启后,需要重新格式化,则是因为hadoop格式化后的文件系统目录在/tmp文件夹下,如下图:

14/12/21 22:54:31 INFO common.Storage: Image file /tmp/hadoop-fengfu/dfs/name/current/fsimage of size 112 bytes saved in 0 seconds.
14/12/21 22:54:31 INFO namenode.FSEditLog: closing edit log: position=4, editlog=/tmp/hadoop-fengfu/dfs/name/current/edits
14/12/21 22:54:31 INFO namenode.FSEditLog: close success: truncate to 4, editlog=/tmp/hadoop-fengfu/dfs/name/current/edits
14/12/21 22:54:32 INFO common.Storage: Storage directory /tmp/hadoop-fengfu/dfs/name has been successfully formatted.

 每次系统重启后,这个文件夹下的东西都清空,所以每次系统重启后启动hadoop都需要进行重新格式化,不重启则就不需要,建议在配置文件中重新指定hadoop文件系统的位置,不要放在/tmp下,每次格式化后都会丢失hdfs里面存储的数据

3 推荐使用主机名进行配置Hadoop是因为如果想配置集群的话,不用localhost是因为如果配置真分布式,则还需要修改掉配置文件中的localhost.

相关推荐