hadoop安装指南
测试环境服务地址:
master:192.168.72.141
slave1:192.168.72.146
slave2:192.168.72.148
slave3:192.168.72.149
对应机器名称为
192.168.72.141 Master.Hadoop
192.168.72.146 Slave1.Hadoop
192.168.72.148 Slave2.Hadoop
192.168.72.149 Slave3.Hadoop
1、网络配置(网络配置只演示master,其他类似) 每台机器都需要配置
a、修改当前机器名称
vim /etc/sysconfig/network
修改HOSTNAME 即可 master的设置为Master.Hadoop
b、修改当前机器ip
vim/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
BOOTPROTO="none"
IPADDR=192.168.72.141
NETMASK=255.255.255.0
GATEWAY=192.168.72.1
DNS1=8.8.8.8
HWADDR="00:0C:29:12:D1:66"
IPV6INIT="no"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
UUID="49c41af0-b4c2-467b-9396-9b61be1e8f1c"
c、修改hosts文件
vim /etc/hosts
192.168.72.141 Master.Hadoop
192.168.72.146 Slave1.Hadoop
192.168.72.148 Slave2.Hadoop
192.168.72.149 Slave3.Hadoop
2、ssh免密码登录
先确保所有主机的防火墙处于关闭状态。
四台机器都要保证无密码登录
1. $cd~/.ssh
2. $ssh-keygen-t rsa --------------------然后一直按回车键,就会按照默认的选项将生成的密钥保存在.ssh/id_rsa文件中。
3. $cpid_rsa.pub authorized_keys
这步完成后,正常情况下就可以无密码登录本机了,即ssh localhost,无需输入密码。
4. 所有服务器执行上面操作之后,在执行下面,主要防止authorized_keys覆盖。
$ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.72.146
或者
ssh-copy-id-i ~/.ssh/id_rsa.pub root@Slave1.Hadoop
3、Hadoop集群安装
准备的是hadoop-2.5.2.tar.gz,hadoop-native-64-2.5.2.tar(在启动的时候可能会出现错误,测试需要覆盖原来的lib/native),创建hadoop用户省略 自己去创建
我准备的目录为:/hadoop
进入/hadoop目录(已经上传了hadoop-2.5.2.tar.gz),
a、解压
tar -xvzf hadoop-2.5.2.tar.gz
b、重命名
mv hadoop-2.5.2 hadoop
c、将文件夹"hadoop"读权限分配给hadoop用户
chown –R hadoop:hadoop hadoop
d、删除hadoop-2.5.2.tar.gz
rm -fr hadoop-2.5.2.tar.gz
e、进入/hadoop/hadoop/
创建tmp目录
mkdir tmp
f、设置hadoop的环境变量
vim /etc/profile
修改,添加
export HADOOP_HOME=/hadoop/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
g、再执行:source /etc/profile
h、配置hadoop
进入/hadoop/hadoop/etc/hadoop目录
配置hadoop-env.sh文件
vim hadoop-env.sh
修改
export JAVA_HOME=/usr/java/jdk1.7.0_79
配置core-site.xml文件
<property>
<name>hadoop.tmp.dir</name>
<value>/hadoop/hadoop/tmp</value>
<description>A base for other temporarydirectories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://192.168.72.141:9000</value>
</property>
备注:如没有配置hadoop.tmp.dir参数,此时系统默认的临时目录为:/tmp/hadoo-hadoop。而这个目录在每次重启后都会被干掉,必须重新执行format才行,否则会出错
配置hdfs-site.xml文件
/hadoop/name ,/hadoop/data这个两个目录先创建好
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/hadoop/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/hadoop/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>192.168.72.141:9001</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
配置mapred-site.xml文件(由于这个版本没有这个文件,但是有mapred-site.xml.template,执行cp mapred-site.xml.template mapred-site.xml即可)
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>192.168.72.141:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>192.168.72.141:19888</value>
</property>
在当前目录下创建masters, slaves
vim masters
添加内容
192.168.72.141
vim slaves
添加内容
192.168.72.146
192.168.72.148
192.168.72.149
这样的话masker配置好了,其他三个节点复制即可(注意:jdk安装目录,以及hadoop安装目录必须和masker一样,防止出现乱七八糟的问题)
scp -r /hadoop/hadoop root@服务器IP:/hadoop/
复制完成之后,切换到对应的节点做如下操作
chown -R hadoop:hadoop hadoop
vim /etc/profile
修改,添加
export HADOOP_HOME=/hadoop/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
4、启动hadoop(启动只需在master节点即可)
格式化HDFS文件系统
hadoop namenode -format
启动hadoop
在启动前关闭集群中所有机器的防火墙,不然会出现datanode开后又自动关闭。
service iptables stop
start-all.sh启动
其中JobHistoryServer需要单独启动
mr-jobhistory-daemon.sh start historyserver
停止执行mr-jobhistory-daemon.sh stop historyserver
master节点输入jps
slaves节点执行jps
通过浏览器查看集群运行状态
http://192.168.72.141:50070
http://192.168.72.141:8088
http://192.168.72.141:19888
运行Hadoop自带的wordcount示例
进入到/hadoop目录下
在/hadoop下创建一个文件vi wordcount.txt
内容为:
hello you
hello me
hello everyone
创建hadoop目录
hadoop fs -mkdir /data/wordcount (创建这个,报错,导致创建不成功,估计确实一些参数,我直接创建了两次 先创建hadoop fs -mkdir /data/,再创建wordcount)
hadoop fs –mkdir /output/
上传文件
hadoop fs -put wordcount.txt/data/wordcount/
执行wordcount程序
hadoop jar hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.2.jarwordcount /data/wordcount /output/wordcount/
查看结果
hadoop fs -text /output/wordcount/part-r-00000