理大批量的数据,最近有点时间,想要学习学习这个东西,就自己在电脑上装了一台虚拟机,
安装了linux操作系统,结合网上前辈们的资料,自己实践了一下,由于是第一次学习,所以
看似简单的问题,确花费了一些时间,走了不少弯路,不过欣慰的是,终于将一个简单的
hadoop配置完成。趁热打铁,为了不至于以后忘记,特此将这些配置先记录下来,以便下次
查看。
操作环境:由于本人没有太多的机子供其测试使用,顾在自己的电脑上安装了虚拟机,同时在
虚拟机中安装了linux操作系统,克隆了三台。
操作系统版本:redhat5.4
操作步骤:
说明:我复制了三台机子,安排如下
机器名 ip 作用
liujun-c-1 192.168.12.247 NameNode、master、jobTracker liujun-c-2 192.168.12.238 datenode、slave、taskTracker
liujun-c-3 192.168.12.223 datenode、slave、taskTracker
注:机器名称最好不好使用"_",可以使用"-",我开始也是使用"_"来命名名称节点的,但是
后面发现有问题,老是通不过,后来在网上看到有朋友这麽说,我就按照他说的方式改整了一
下,后续就没有问题了;具体原因,由于是初步接触hadoop,所以无法解释清楚。
修改机器名称方法: vi /etc/sysconfig/network
里边有一个 HOSTNAME = "你要起的机器名称",修改保存完成后,最好重启一下网络配置
service network restart
1.安装jdk
下载jdk安装包而且版本必须是jdk1.6以上版本,我这里选用的是
jdk-6u19-linux-i586-rpm.bin(jdk1.6.0_19)
通过ftp传到指定文件夹,操作如下
(1).先给上传的文件授权可操作,否则无法操作当前文件
chmod u+x jdk-6u19-linux-i586-rpm.bin
(2).通过 ./jdk-6u19-linux-i586-rpm.bin 执行文件
(3).通过 rpm -ivh jdk-6u19-linux-i586-rpm 执行这个文件
(4).一路回车,基本jdk就完成了安装
(5).配置jdk环境,vi /etc/profile,在文件最后边加上
JAVA_HOME=/usr/java/jdk1.6.0_19
CLASSPATH=.:$JAVA_HOME/lib.tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH
保存完成后,使用logout登出,重新输入用户名和密码,进入系统后
使用指令 java -version 查看你的jdk版本是否和你安装的一致,如果显示
java version "1.6.0_19"
Java(TM) SE Runtime Environment (build 1.6.0_19-b04)
Java HotSpot(TM) Server VM (build 16.2-b04, mixed mode)
则说明安装成功。
说明:jdk需要在你集群的每台机子上面安装
2.开启ssh服务
(1)在NameNode 上实现无密码登录本机:
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
直接回车,完成后会在~/.ssh/生成两个文件:id_dsa 和id_dsa.pub。这两个是成
对出现,类似钥匙和锁。再把id_dsa.pub 追加到授权key 里面(当前并没有
authorized_keys
文件):
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys。完成后可以实现无密码
使用本机测试一下
ssh localhost
(2)实现NameNode 无密码登录其他DataNode
拷贝NameNode 的id_dsa.pub 文件:
scp id_dsa.pub [email protected]:/tmp
登录192.168.12.238,在/tmp目录下面能够看到从namenode(192.168.12.247)
复制的id_dsa.pub文件,然后执行
cat id_dsa.pub >> .ssh/authorized_keys
其他的dataNode 执行同样的操作。
注意:如果配置完毕,如果namenode 依然不能访问datanode,可以修改datanode
authorized_keys,将其权限修改 为 $ chmod 600 authorized_keys。
(3).配置完测试
通过namenode(192.168.12.247) ssh连接两个
datanode(192.168.12.238,192.168.12.223)
使用指令如下:ssh [email protected](223),如果能够无需密码登录则说明配
置成功完成,否则请检查以上的配置那里出了问题。
(4)在/etc/hosts 中添加机器名和相应的IP
vi /etc/hosts
添加内容如下:
127.0.0.1 localhost
192.168.12.247 liujun-c-1
192.168.12.238 liujun-c-2
192.168.12.223 liujun-c-3
注:ip后面跟的liujun-c-* 为机器名称,前面提到的 在/etc/sysconfig/network
中修改的HOSTNAME
4.安装hadoop
(1).从hadoop官网下载(http://hadoop.apache.org)hadoop安装包,这里我使用的是hadoop-0.20.2.tar.gz
(2).上传至服务器,进行解压安装
tar -zxvf hadoop-0.20.2.tar.gz
(3).解压完成后配置hadoop环境
把Hadoop 的安装路径添加到环/etc/profile 中:
export HADOOP_HOME=/software/hadoop-0.20.2
export PATH=$HADOOP_HOME/bin:$PATH
说明:/software/是我放置hadoop解压文件的目录
(4).配置hadoop环境变量
hadoop 的主要配置都在hadoop-0.20.2/conf 下。
在conf/hadoop-env.sh 中配置Java 环境
vi hadoop-env.sh
文件末尾添加
export JAVA_HOME=/usr/java/jdk1.6.0_19
完成保存
配置conf/masters 和conf/slaves 文件
vi masters 里边写入
192.168.12.247
vi slaves 里边写入
192.168.0.3
192.168.0.5
(5)修改hadoop配置文件
配置conf/core-site.xml, conf/hdfs-site.xml 及conf/mapred-site.xml
vi core_site.xml 向里边写入
保存 :wq完成
vi hdfs-site.xml 里边写入
说明:( replication 默认为3,如果不修改,datanode 少于三台就会报错)
保存:wq 完成
vi mapred-site.xml 里边写入
保存 :wq完成
注:上面关于hadoop配置文件和jdk配置都需要在三台机子上进行相同的配置,缺一不可
(6).使用hadoop
重要说明:在运行hadoop之前,一定要关闭服务器上面的防火墙,否则测试肯定会失败
service iptables stop
(1).首先登陆到namenode服务器(我这里是:192.168.12.247)
使用hadoop格式化文件系统
hadoop namenode -format
(2).启动hadoop系统服务
进入hadoop加压目录中的conf
cd /software/hadoop-0.20.2/bin
./start-all.sh (启动hadoop整个系统服务,关闭是:./stop-all.sh)
(3).查看服务启动状态
使用jps在namenode(192.168.12.247)上应该能够看到这样的内容
root@liujun-1-c# jps
5946 secondaryNameNode
6120 Jps
6026 JobTracker
5838 NameNode
登陆datanode节点(192.168.12.238和192.168.12.223)
root@liujun-2-c# jps
4387 DataNode
4464 TaskTrack
6773 JPS
查看集群状态:$ hadoop dfsadmin -report
Hadoop 的web 方式查看:http://192.168.12.247:50070
(6).运行实例
运行wordcount.java 程序
(1)先在tmp目录下建立两个输入文件file01 和file02
cd /tmp
$ echo “Hello World Bye World” > file01
$ echo “Hello Hadoop Goodbye Hadoop” > file02
(2)在hdfs 中建立一个input 目录:$ hadoop fs –mkdir input
(3)将file01 和file02 拷贝到hdfs 中:
cd /tmp
hadoop fs -put file01 input
hadoop fs -put file02 input
(4)执行wordcount:
进入hadoop安装目录
cd /software/hadoop-0.20.2
执行
$ hadoop jar hadoop-0.20.1-examples.jar wordcount input output
(5)完成之后,查看结果:
$ hadoop fs -cat output/part-r-00000
输出结果
Goodbye 1
Hadoop 2
Hello 2
World 2