Hadoop1.1.2伪分布式安装

一、安装前准备

本次安装所使用软件:
虚拟机:VirtualBox-4.3.8-92456-Win.exe
JDK:jdk-6u24-linux-i586.bin
Hadoop:hadoop-1.1.2.tar.gz
Linux版本:CentOS-5.5-i386-bin-DVD.iso
Hadoop组件依赖关系

Linux系统的安装就不介绍了,下面默认为已经安装好Linux系统了。

设置Linux的静态IP

编辑/etc/sysconfig/network-scripts/ifcfg-eth0文件,修改为如下内容:

  1. DEVICE=eth0
  2. BOOTPROTO="static"
  3. HWADDR=08:00:27:22:13:54
  4. IPV6INIT="no"
  5. ONBOOT=yes
  6. DNS=192.168.1.1
  7. IPADDR=192.168.1.150
  8. NETMASK=255.255.255.0
  9. GATEWAY=192.168.1.1

然后执行网络重启命令:

  1. service network restart

最后执行ifconfig命令查看是否修改成功

  1. [root@hadoop-master software]# ifconfig
  2. eth0 Link encap:Ethernet HWaddr 08:00:27:22:13:54
  3. inet addr:192.168.1.150 Bcast:192.168.1.255 Mask:255.255.255.0
  4. inet6 addr: fe80::a00:27ff:fe22:1354/64 Scope:Link
  5. UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
  6. RX packets:3078 errors:0 dropped:0 overruns:0 frame:0
  7. TX packets:423 errors:0 dropped:0 overruns:0 carrier:0
  8. collisions:0 txqueuelen:1000
  9. RX bytes:230636 (225.2 KiB) TX bytes:56128 (54.8 KiB)
  10. lo Link encap:Local Loopback
  11. inet addr:127.0.0.1 Mask:255.0.0.0
  12. inet6 addr: ::1/128 Scope:Host
  13. UP LOOPBACK RUNNING MTU:16436 Metric:1
  14. RX packets:76 errors:0 dropped:0 overruns:0 frame:0
  15. TX packets:76 errors:0 dropped:0 overruns:0 carrier:0
  16. collisions:0 txqueuelen:0
  17. RX bytes:6266 (6.1 KiB) TX bytes:6266 (6.1 KiB)
  18. [root@hadoop-master software]#

修改VirtualBox的虚拟网卡地址

该步骤需保证虚拟机中的Linux能与客户机在同一网段并且ping通。
设置VirtualBox虚拟机的网络连接方式为Host-Only

再修改VirtualBox虚拟出那块网卡的ip地址

修改为如下内容:

最后需要验证宿主机和虚拟机是否能够互通
宿主机ping虚拟机:

虚拟机ping宿主机:

  1. [root@hadoop-master software]# ping -c3 192.168.1.100
  2. PING 192.168.1.100 (192.168.1.100) 56(84) bytes of data.
  3. 64 bytes from 192.168.1.100: icmp_seq=1 ttl=64 time=0.366 ms
  4. 64 bytes from 192.168.1.100: icmp_seq=2 ttl=64 time=0.357 ms
  5. 64 bytes from 192.168.1.100: icmp_seq=3 ttl=64 time=0.189 ms
  6. --- 192.168.1.100 ping statistics ---
  7. 3 packets transmitted, 3 received, 0% packet loss, time 2000ms
  8. rtt min/avg/max/mdev = 0.189/0.304/0.366/0.081 ms
  9. [root@hadoop-master software]#

修改主机名

修改当前会话主机名(当前会话生效):hostname 主机名
修改配置文件主机名(永久生效):vi /etc/sysconfig/network

  1. [root@hadoop-master software]# cat /etc/sysconfig/network
  2. NETWORKING=yes
  3. NETWORKING_IPV6=no
  4. HOSTNAME=hadoop-master
  5. [root@hadoop-master software]# hostname
  6. hadoop-master

把hostname和ip绑定

修改hosts文件:vi /etc/hosts文件,增加一行

  1. 192.168.1.150 hadoop-master

关闭防火墙:service iptables stop

  1. 查看防火墙状态:service iptables status
  2. 关闭防火墙:service iptables stop
  3. 关闭防火墙的自运行:

    1. 查看自运行状态:chkconfig –list | grep ‘iptables’

      1. [root@hadoop-master sysconfig]# chkconfig --list | grep 'iptables'
      2. iptables 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
    2. 关闭防火墙:chkconfig iptables off

      1. [root@hadoop-master sysconfig]# chkconfig iptables off
    3. 再次查看自运行状态:chkconfig –list | grep ‘iptables’

      1. [root@hadoop-master sysconfig]# chkconfig --list | grep 'iptables'
      2. iptables 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭

这样下次开机的时候就会不开启防火墙了

二、SSH免密码登陆

生成秘钥文件

进入~/.ssh文件夹,使用ssh-keygen -t rsa命令
注意:
1.如果没有.ssh文件夹,就使用ssh协议登录一次试试
2.如果还是没有.ssh文件夹,就自己创建一个。修改文件夹权限为700
3.authorized_keys文件的权限为644

  1. [root@hadoop-master software]# cd ~/.ssh/
  2. [root@hadoop-master .ssh]# ssh-keygen -t rsa

查看.ssh文件夹中已经多出了两个文件id_rsa和 id_rsa.pub

  1. [root@hadoop-master .ssh]# ls
  2. id_rsa id_rsa.pub
  3. [root@hadoop-master .ssh]#

将id_rsa.pub公钥文件内容放入到authorized_keys中,变成私钥

  1. [root@hadoop-master .ssh]# cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys

测试免密码登陆是否成功

使用:ssh localhost命令连接本机,第一次连接时会让输入yes。以后就不用输入了。

  1. [root@hadoop-master .ssh]# ssh localhost
  2. The authenticity of host 'localhost (127.0.0.1)' can't be established.
  3. RSA key fingerprint is 8c:f4:bf:b5:c4:95:30:7b:1c:d7:cc:f8:69:15:e1:ab.
  4. Are you sure you want to continue connecting (yes/no)? yes
  5. Warning: Permanently added 'localhost' (RSA) to the list of known hosts.
  6. Last login: Sun Apr 5 17:45:25 2015

三、安装JDK

JDK的安装很简单,解压缩。然后配置环境变量即可。
安装步骤如下:

1. 授予执行权限

  1. [root@hadoop-master software]# chmod u+x jdk-6u24-linux-i586.bin

2. 解压缩

  1. [root@hadoop-master software]# ./jdk-6u24-linux-i586.bin

3. 配置环境变量

编辑/etc/profile文件,增加如下代码

  1. # JAVA_HOME
  2. export JAVA_HOME=/opt/modules/jdk1.6.0_24
  3. export PATH=$JAVA_HOME/bin:$PATH
  4. export CLASS_PATH=.:$JAVA_HOME/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

然后使设置立即生效:

  1. source /etc/profile

4. 测试安装

  1. [root@hadoop-master software]# java -version
  2. java version "1.6.0_24"
  3. Java(TM) SE Runtime Environment (build 1.6.0_24-b07)
  4. Java HotSpot(TM) Client VM (build 19.1-b02, mixed mode, sharing)
  5. [root@hadoop-master software]#

四、安装Hadoop

Hadoop伪分布式的安装也很简单
解压缩,配置环境变量。修改配置文件即可

1、解压缩hadoop-1.1.2.tar.gz

  1. [root@hadoop-master software]# tar -zxvf hadoop-1.1.2.tar.gz

解压完成后,可以看下Hadoop1.x的目录结构

2、添加到环境变量中

编辑/etc/profile文件,在文件最后增加如下内容

  1. # HADOOP_HOME
  2. export HADOOP_HOME=/opt/modules/hadoop-1.1.2
  3. export PATH=$PATH:$HADOOP_HOME/bin

3、使设置立即生效

  1. source /etc/profile

4、修改hadoop的配置文件

伪分布式的安装需要修改Hadoop的6个配置文件(${HADOOP_HOME}/conf),如下:
Hadoop脚本配置文件:hadoop-env.sh
核心配置文件:core-site.xml
HDFS的配置文件:hdfs-site.xml
MapReduces的配置文件:mapred-site.xml
管理节点配置文件:masters
工作节点配置文件:slaves

配置hadoop-env.sh

打开${HADOOP_HOME}/conf/hadoop-env.sh
修改JAVA_HOME变量为自己安装的JDK的位置

  1. export JAVA_HOME=/opt/modules/jdk1.6.0_24
配置core-site.xml

${HADOOP_HOME}/conf/core-site.xml中需要配置HDFS的默认主机名、端口和hadoop在本地的文件系统目录(目录需要存在

为什么要设置HDFS的工作目录呢?
因为不设置的话,Hadoop的HDFS默认的工作目录是在Linux系统的/tmp目录下,

这个目录在Linux重启后内容会被清空。所以你还需要重新再格式化。所以,这里我们指定HDFS的工作目录为我们自定义的目录。

  1. <?xml version="1.0"?>
  2. <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
  3. <!-- Put site-specific property overrides in this file. -->
  4. <configuration>
  5. <property>
  6. <name>fs.default.name</name>
  7. <value>hdfs://hadoop-master:9000</value>
  8. <description>hadoop-master</description>
  9. </property>
  10. <property>
  11. <name>hadoop.tmp.dir</name>
  12. <value>/opt/data/tmp</value>
  13. </property>
  14. </configuration>
配置hdfs-site.xml

${HADOOP_HOME}/conf/hdfs-site.xml中主要配置:
文件块的副本数(dfs.replication):由于是伪分布式,主节点和从节点都在同一台机器上,所以副本数为1
是否进行权限检查(dfs.permissions):false

  1. <?xml version="1.0"?>
  2. <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
  3. <!-- Put site-specific property overrides in this file. -->
  4. <configuration>
  5. <property>
  6. <name>dfs.replication</name>
  7. <value>1</value>
  8. </property>
  9. <property>
  10. <name>dfs.permissions</name>
  11. <value>false</value>
  12. </property>
  13. </configuration>
配置mapred-site.xml

${HADOOP_HOME}/conf/mapred-site.xml中主要配置MapReduce的jobTracker的主机和端口

  1. <?xml version="1.0"?>
  2. <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
  3. <!-- Put site-specific property overrides in this file. -->
  4. <configuration>
  5. <property>
  6. <name>mapred.job.tracker</name>
  7. <value>hadoop-master:9001</value>
  8. </property>
  9. </configuration>
配置masters

指定SecondaryNameNode的位置(主机名)。
打开${HADOOP_HOME}/conf/masters文件,增加如下内容:

  1. hadoop-master
配置slaves

指定DataNode和TaskTracker的位置(主机名)。
打开${HADOOP_HOME}/conf/slaves文件,增加如下内容:

  1. hadoop-master

5、格式化NameNode

配置完成后需要格式化NameNode,第一次使用时需要格式化,之后再次使用时就不再需要。
在${HADOOP_HOME}/bin/目录下执行

  1. [root@hadoop-master bin]# hadoop namenode -format

五、测试Hadoop安装是否成功

启动Hadoop

Hadoop的执行命令都在${HADOOP_HOME}/bin目录下,启动和停止的2种方式

  1. 全部启动或停止:
    启动:start-all.sh
    启动顺序为
    NameNode–>DataNode–>SecondaryNameNode–>JobTracker–>TaskTracker

    停止:stop-all.sh
    停止顺序为
    JobTracker–>TaskTracker–>NameNode–>DataNode–>SecondaryNameNode

  2. 单个启动:
    启动:start-dfs.sh start-mapred.sh
    停止:stop-dfs.sh stop-mapred.sh

这里我们直接全部启动:start-all.sh

  1. [root@hadoop-master bin]# start-all.sh
  2. starting namenode, logging to /opt/modules/hadoop-1.1.2/libexec/../logs/hadoop-root-namenode-hadoop-master.out
  3. hadoop-master: starting datanode, logging to /opt/modules/hadoop-1.1.2/libexec/../logs/hadoop-root-datanode-hadoop-master.out
  4. hadoop-master: starting secondarynamenode, logging to /opt/modules/hadoop-1.1.2/libexec/../logs/hadoop-root-secondarynamenode-hadoop-master.out
  5. starting jobtracker, logging to /opt/modules/hadoop-1.1.2/libexec/../logs/hadoop-root-jobtracker-hadoop-master.out
  6. hadoop-master: starting tasktracker, logging to /opt/modules/hadoop-1.1.2/libexec/../logs/hadoop-root-tasktracker-hadoop-master.out
  7. [root@hadoop-master bin]#

可以从控制台看到,启动后的日志信息都存在在了HADOOPHOME/logs/{HADOOP_HOME}/logs/目录下。打开${HADOOP_HOME}/conf/hadoop-env.sh文件,里面有如下一行配置:

  1. # Where log files are stored. $HADOOP_HOME/logs by default.
  2. # export HADOOP_LOG_DIR=${HADOOP_HOME}/logs

日志类型有2种,分别以log和out结尾。

  1. 以log结尾的日志
    通过log4j采用每日滚动的方式来记录日志,主要记录了启动和停止的日志信息。
  2. 以out结尾的日志
    记录标准输出和标准错误的日志,内容比较少。

日志文件名格式:
hadoop-root-datanode-hadoop-master.log
hadoop-用户名-守护进程名称-运行守护进程的节点名称.log

消除start-all.sh时候的警告信息

如果启动过程中出现如下警告信息

  1. Warning: $HADOOP_HOME is deprecated

出现该警告的原因为:${HADOOP_HOME}/bin/hadoop-config.sh文件中的如下代码

主要是:$HADOOP_HOME_WARN_SUPPERSS变量内容为空的原因,
解决办法是设置其不为空即可!
修改vi /etc/profile文件,增加如下代码

  1. export HADOOP_HOME_WARN_SUPPRESS=1

然后使设置生效

  1. source /etc/profile

通过jps命令查看Hadoop的5个守护进程

ps表示查看Linux系统中的进程。jps表示查看系统中的Java进程

  1. [root@hadoop-master bin]# jps
  2. 6432 DataNode
  3. 6639 JobTracker
  4. 6915 Jps
  5. 6316 NameNode
  6. 6545 SecondaryNameNode
  7. 6791 TaskTracker
  8. [root@hadoop-master bin]#

登陆WEB管理页面

在Windwos系统的hosts文件中配置ip地址和hostname的映射
打开C:\Windows\System32\drivers\etc\hosts文件,增加如下内容。这样在访问192.168.1.150时,可以直接输入hadoop-master来访问了。

  1. ## Hadoop1.1.2
  2. 192.168.1.150 hadoop-master
HDFS的管理页面

http://hadoop-master:50070

MapReduce的管理页面

http://hadoop-master:50030

各监控页面显示正常的话,表示Hadoop伪分布式安装成功!





posted @ 2016-05-06 21:51  Python魔法师  阅读(296)  评论(0编辑  收藏  举报