Hadoop1.1.2伪分布式安装
设置Linux的静态IP
修改VirtualBox的虚拟网卡地址
修改主机名
把hostname和ip绑定
关闭防火墙:service iptables stop
二、SSH免密码登陆
生成秘钥文件
测试免密码登陆是否成功
三、安装JDK
1. 授予执行权限
2. 解压缩
3. 配置环境变量
4. 测试安装
四、安装Hadoop
1、解压缩hadoop-1.1.2.tar.gz
2、添加到环境变量中
3、使设置立即生效
4、修改hadoop的配置文件
配置hadoop-env.sh
配置core-site.xml
配置hdfs-site.xml
配置mapred-site.xml
配置masters
配置slaves
5、格式化NameNode
五、测试Hadoop安装是否成功
启动Hadoop
消除start-all.sh时候的警告信息
通过jps命令查看Hadoop的5个守护进程
登陆WEB管理页面
HDFS的管理页面
MapReduce的管理页面
一、安装前准备
本次安装所使用软件:
虚拟机: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文件,修改为如下内容:
DEVICE=eth0
BOOTPROTO="static"
HWADDR=08:00:27:22:13:54
IPV6INIT="no"
ONBOOT=yes
DNS=192.168.1.1
IPADDR=192.168.1.150
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
然后执行网络重启命令:
service network restart
最后执行ifconfig命令查看是否修改成功
[root@hadoop-master software]# ifconfig
eth0 Link encap:Ethernet HWaddr 08:00:27:22:13:54
inet addr:192.168.1.150 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe22:1354/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:3078 errors:0 dropped:0 overruns:0 frame:0
TX packets:423 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:230636 (225.2 KiB) TX bytes:56128 (54.8 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:76 errors:0 dropped:0 overruns:0 frame:0
TX packets:76 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:6266 (6.1 KiB) TX bytes:6266 (6.1 KiB)
[root@hadoop-master software]#
修改VirtualBox的虚拟网卡地址
该步骤需保证虚拟机中的Linux能与客户机在同一网段并且ping通。
设置VirtualBox虚拟机的网络连接方式为Host-Only
再修改VirtualBox虚拟出那块网卡的ip地址
修改为如下内容:
最后需要验证宿主机和虚拟机是否能够互通
宿主机ping虚拟机:
虚拟机ping宿主机:
[root@hadoop-master software]# ping -c3 192.168.1.100
PING 192.168.1.100 (192.168.1.100) 56(84) bytes of data.
64 bytes from 192.168.1.100: icmp_seq=1 ttl=64 time=0.366 ms
64 bytes from 192.168.1.100: icmp_seq=2 ttl=64 time=0.357 ms
64 bytes from 192.168.1.100: icmp_seq=3 ttl=64 time=0.189 ms
--- 192.168.1.100 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 0.189/0.304/0.366/0.081 ms
[root@hadoop-master software]#
修改主机名
修改当前会话主机名(当前会话生效):hostname 主机名
修改配置文件主机名(永久生效):vi /etc/sysconfig/network
[root@hadoop-master software]# cat /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=hadoop-master
[root@hadoop-master software]# hostname
hadoop-master
把hostname和ip绑定
修改hosts文件:vi /etc/hosts文件,增加一行
192.168.1.150 hadoop-master
关闭防火墙:service iptables stop
- 查看防火墙状态:service iptables status
- 关闭防火墙:service iptables stop
关闭防火墙的自运行:
查看自运行状态:chkconfig –list | grep ‘iptables’
[root@hadoop-master sysconfig]# chkconfig --list | grep 'iptables'
iptables 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
关闭防火墙:chkconfig iptables off
[root@hadoop-master sysconfig]# chkconfig iptables off
再次查看自运行状态:chkconfig –list | grep ‘iptables’
[root@hadoop-master sysconfig]# chkconfig --list | grep 'iptables'
iptables 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭
这样下次开机的时候就会不开启防火墙了
二、SSH免密码登陆
生成秘钥文件
进入~/.ssh文件夹,使用ssh-keygen -t rsa命令
注意:
1.如果没有.ssh文件夹,就使用ssh协议登录一次试试
2.如果还是没有.ssh文件夹,就自己创建一个。修改文件夹权限为700
3.authorized_keys文件的权限为644
[root@hadoop-master software]# cd ~/.ssh/
[root@hadoop-master .ssh]# ssh-keygen -t rsa
查看.ssh文件夹中已经多出了两个文件id_rsa和 id_rsa.pub
[root@hadoop-master .ssh]# ls
id_rsa id_rsa.pub
[root@hadoop-master .ssh]#
将id_rsa.pub公钥文件内容放入到authorized_keys中,变成私钥
[root@hadoop-master .ssh]# cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
测试免密码登陆是否成功
使用:ssh localhost命令连接本机,第一次连接时会让输入yes。以后就不用输入了。
[root@hadoop-master .ssh]# ssh localhost
The authenticity of host 'localhost (127.0.0.1)' can't be established.
RSA key fingerprint is 8c:f4:bf:b5:c4:95:30:7b:1c:d7:cc:f8:69:15:e1:ab.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'localhost' (RSA) to the list of known hosts.
Last login: Sun Apr 5 17:45:25 2015
三、安装JDK
JDK的安装很简单,解压缩。然后配置环境变量即可。
安装步骤如下:
1. 授予执行权限
[root@hadoop-master software]# chmod u+x jdk-6u24-linux-i586.bin
2. 解压缩
[root@hadoop-master software]# ./jdk-6u24-linux-i586.bin
3. 配置环境变量
编辑/etc/profile文件,增加如下代码
# JAVA_HOME
export JAVA_HOME=/opt/modules/jdk1.6.0_24
export PATH=$JAVA_HOME/bin:$PATH
export CLASS_PATH=.:$JAVA_HOME/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
然后使设置立即生效:
source /etc/profile
4. 测试安装
[root@hadoop-master software]# java -version
java version "1.6.0_24"
Java(TM) SE Runtime Environment (build 1.6.0_24-b07)
Java HotSpot(TM) Client VM (build 19.1-b02, mixed mode, sharing)
[root@hadoop-master software]#
四、安装Hadoop
Hadoop伪分布式的安装也很简单
解压缩,配置环境变量。修改配置文件即可
1、解压缩hadoop-1.1.2.tar.gz
[root@hadoop-master software]# tar -zxvf hadoop-1.1.2.tar.gz
解压完成后,可以看下Hadoop1.x的目录结构
2、添加到环境变量中
编辑/etc/profile文件,在文件最后增加如下内容
# HADOOP_HOME
export HADOOP_HOME=/opt/modules/hadoop-1.1.2
export PATH=$PATH:$HADOOP_HOME/bin
3、使设置立即生效
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的位置
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的工作目录为我们自定义的目录。
<?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://hadoop-master:9000</value>
<description>hadoop-master</description>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/data/tmp</value>
</property>
</configuration>
配置hdfs-site.xml
${HADOOP_HOME}/conf/hdfs-site.xml中主要配置:
文件块的副本数(dfs.replication):由于是伪分布式,主节点和从节点都在同一台机器上,所以副本数为1
是否进行权限检查(dfs.permissions):false
<?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
${HADOOP_HOME}/conf/mapred-site.xml中主要配置MapReduce的jobTracker的主机和端口
<?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>hadoop-master:9001</value>
</property>
</configuration>
配置masters
指定SecondaryNameNode的位置(主机名)。
打开${HADOOP_HOME}/conf/masters文件,增加如下内容:
hadoop-master
配置slaves
指定DataNode和TaskTracker的位置(主机名)。
打开${HADOOP_HOME}/conf/slaves文件,增加如下内容:
hadoop-master
5、格式化NameNode
配置完成后需要格式化NameNode,第一次使用时需要格式化,之后再次使用时就不再需要。
在${HADOOP_HOME}/bin/目录下执行
[root@hadoop-master bin]# hadoop namenode -format
五、测试Hadoop安装是否成功
启动Hadoop
Hadoop的执行命令都在${HADOOP_HOME}/bin目录下,启动和停止的2种方式
全部启动或停止:
启动:start-all.sh
启动顺序为:
NameNode–>DataNode–>SecondaryNameNode–>JobTracker–>TaskTracker停止:stop-all.sh
停止顺序为:
JobTracker–>TaskTracker–>NameNode–>DataNode–>SecondaryNameNode单个启动:
启动:start-dfs.sh start-mapred.sh
停止:stop-dfs.sh stop-mapred.sh
这里我们直接全部启动:start-all.sh
[root@hadoop-master bin]# start-all.sh
starting namenode, logging to /opt/modules/hadoop-1.1.2/libexec/../logs/hadoop-root-namenode-hadoop-master.out
hadoop-master: starting datanode, logging to /opt/modules/hadoop-1.1.2/libexec/../logs/hadoop-root-datanode-hadoop-master.out
hadoop-master: starting secondarynamenode, logging to /opt/modules/hadoop-1.1.2/libexec/../logs/hadoop-root-secondarynamenode-hadoop-master.out
starting jobtracker, logging to /opt/modules/hadoop-1.1.2/libexec/../logs/hadoop-root-jobtracker-hadoop-master.out
hadoop-master: starting tasktracker, logging to /opt/modules/hadoop-1.1.2/libexec/../logs/hadoop-root-tasktracker-hadoop-master.out
[root@hadoop-master bin]#
可以从控制台看到,启动后的日志信息都存在在了{HADOOP_HOME}/logs/目录下。打开${HADOOP_HOME}/conf/hadoop-env.sh文件,里面有如下一行配置:
# Where log files are stored. $HADOOP_HOME/logs by default.
# export HADOOP_LOG_DIR=${HADOOP_HOME}/logs
日志类型有2种,分别以log和out结尾。
- 以log结尾的日志
通过log4j采用每日滚动的方式来记录日志,主要记录了启动和停止的日志信息。 - 以out结尾的日志
记录标准输出和标准错误的日志,内容比较少。
日志文件名格式:
hadoop-root-datanode-hadoop-master.log
hadoop-用户名-守护进程名称-运行守护进程的节点名称.log
消除start-all.sh时候的警告信息
如果启动过程中出现如下警告信息
Warning: $HADOOP_HOME is deprecated
出现该警告的原因为:${HADOOP_HOME}/bin/hadoop-config.sh文件中的如下代码
主要是:$HADOOP_HOME_WARN_SUPPERSS变量内容为空的原因,
解决办法是设置其不为空即可!
修改vi /etc/profile文件,增加如下代码
export HADOOP_HOME_WARN_SUPPRESS=1
然后使设置生效
source /etc/profile
通过jps命令查看Hadoop的5个守护进程
ps表示查看Linux系统中的进程。jps表示查看系统中的Java进程
[root@hadoop-master bin]# jps
6432 DataNode
6639 JobTracker
6915 Jps
6316 NameNode
6545 SecondaryNameNode
6791 TaskTracker
[root@hadoop-master bin]#
登陆WEB管理页面
在Windwos系统的hosts文件中配置ip地址和hostname的映射
打开C:\Windows\System32\drivers\etc\hosts文件,增加如下内容。这样在访问192.168.1.150时,可以直接输入hadoop-master来访问了。
## Hadoop1.1.2
192.168.1.150 hadoop-master
HDFS的管理页面
MapReduce的管理页面
各监控页面显示正常的话,表示Hadoop伪分布式安装成功!