操作系统:CentOS 6.6
三台CentOS Server,分别命名为:master, slave-1, slave-2
JAVA:jdk-1.7.0 来自: https://www.java.com/ (其实已经出了1.8.0,但是架构师要求必须用1.7.0)
Hadoop: hadoop-2.7.2 来自:http://apache.claz.org/hadoop/common/hadoop-2.7.2/ 记得找那个带src的,看起来这样hadoop-2.7.2-src.tar.gz
/data/ 单独一个分区,所有内容都放在这里(放哪里没所谓,就是图方便,看得清楚)。
添加用户: user add hadoop (自动生成 hadoop用户和用户组。)
配置 /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.120.9.107 master
10.120.9.211 slave-1
10.120.9.229 slave-2
记得主机名一定要小写!一定要小写!一定要小写!而且不能有别的其它无关域名,否则自己排错去吧...
在master, slave-1, slave-2 三台机器上分别执行下面步骤。
解压缩 jdk-7u80-linux-x64.tar.gz,再移动到/data/
tar xf jdk-7u80-linux-x64.tar.gz
mv jdk1.7.0_80 /data/jdk170/
编辑 /etc/profile,添加如下内容:
JAVA_HOME=/data/jdk170/
JRE_HOME=/data/jdk170/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH
使之生效:
source /etc/profile
运行命令java -version监测,如果出现类似如下内容说明java安装没问题了。
[root@ffcom-us-1 jdk170]# java -version
java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)
如果服务器是32位的,那么下载Hadoop编译好的包直接部署没问题。但是,猫哥的三台Server都是64位的。所以问题来了。或者找别人在64位机上编译好的,或者自己编译。
自己编译步骤,请移步另一篇猫哥原创文: http://blog.csdn.net/972301/article/details/62231113
三台server同时进行,编译好的结果,移动到 /data/hadoop/hadoop-2.7.2/
添加两个目录:
mkdir /data/hadoop/tmp
mkdir /data/hadoop/hdfs/
编辑 /data/hadoop/hadoop-2.7.2/etc/hadoop/hadoop-env.sh 和 /data/hadoop/hadoop-2.7.2/etc/hadoop/yarn-env.sh 两个文件同样设置:
export JAVA_HOME=/data/jdk170
一定要强行设置,不要用默认的。
编辑/etc/profile,追加如下内容:
export HADOOP_HOME=/data/hadoop/hadoop-2.7.2
export PATH=$PATH:$HADOOP_HOME/bin
使之生效:
source /etc/profile
运行命令hadoop,出现类似下面的hadoop用法,说明Hadoop和JAVA都配置好了。
/data/hadoop/hadoop-2.7.2/bin/hadoop
Usage: hadoop [--config confdir] [COMMAND | CLASSNAME]
CLASSNAME run the class named CLASSNAME
or
where COMMAND is one of:
fs run a generic filesystem user client
version print the version
jar run a jar file
note: please use "yarn jar" to launch
YARN applications, not this command.
checknative [-a|-h] check native hadoop and compression libraries availability
distcp copy file or directories recursively
archive -archiveName NAME -p * create a hadoop archive
classpath prints the class path needed to get the
credential interact with credential providers
Hadoop jar and the required libraries
daemonlog get/set the log level for each daemon
trace view and modify Hadoop tracing settings
Most commands print help when invoked w/o parameters.
首先,切换成hadoop用户;
su - hadoop
三台服务器都这么干,首先访问自身无密码
ssh-keygen -t rsa #提示设密码时候直接回车,就是无密码访问了
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
Master服务器执行:
scp ~/.ssh/id_rsa.pub hadoop@slave-1:~/
scp ~/.ssh/id_rsa.pub hadoop@slave-2:~/
在 slave-1, slave-2上,分别执行:
cat ~/id_ras.pub >> ~/.ssh/authorized_keys
同样的,slave-1 -> master, slave-1 -> slave-2; slave-2 -> master, slave-2 -> slave-1
最终结果是,这三台服务器互相ssh hadoop@XXX 都可以无密码直达。
记得ssh-keygen必须是rsa,不能使dsa,否则hadoop不认!
为了方便,直接在master上配置,后面推送到所有slave节点即可。所有配置文件都在 $HADOOP_HOME/etc/hadoop/
此处是Hadoop配置的关键!
4.1 core-site.xml
添加如下内容:
fs.default.name
hdfs://master:9000
HDFS的URI,文件系统://namenode标识:端口号
hadoop.tmp.dir
/data/hadoop/tmp
namenode上本地的hadoop临时文件夹
添加如下内容:
dfs.name.dir
/data/hadoop/hdfs/name1,/data/hadoop/hdfs/name2
namenode上存储hdfs名字空间元数据
dfs.data.dir
/data/hadoop/hdfs/data1,/data/hadoop/hdfs/data2
datanode上数据块的物理存储位置
dfs.replication
1
副本个数,配置默认是3,应小于datanode机器数量
添加如下内容:
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.resourcemanager.webapp.address
master:8099
默认没有这个文件,但是可以执行查找命令,可以找到一个template
find /data/hadoop/hadoop-2.7.2/ -name mapred-site.xml.template
拷贝成mapred-site.xml,再添加如下内容:
mapred.job.tracker
master:9001
mapred.local.dir
/data/hadoop/tmp
在/data/hadoop/hadoop-2.7.2/etc/hadoop/目录下,添加(如果没有)或者编辑 masters 和 slaves两个文件。
masters文件中放一行,就是master节点的主机名。
slaves文件中放所有slave节点的主机名,每个一行。有几个slave节点放几行。
记得:涉及主机名的都是小写字母,而且不要有多余的内容。
scp /data/hadoop/hadoop-2.7.2/etc/hadoop/* hadoop@slave-1:/data/hadoop/hadoop-2.7.2/etc/hadoop/
scp /data/hadoop/hadoop-2.7.2/etc/hadoop/* hadoop@slave-2:/data/hadoop/hadoop-2.7.2/etc/hadoop/
/data/hadoop/hadoop-2.7.2/bin/hadoop namenode -format
会出现很多信息,没有error message或者warning,而且看到success就说明成功了。猫哥的集群搭好了,就不再格式化演示了。按照猫哥的设置,应该有下面信息,格式肯定会不同,只节选了部分。
13/09/10 16:39:33 INFO common.Storage: Storage directory /data/hadoop/name1 has been successfully formatted.
13/09/10 16:39:33 INFO common.Storage: Storage directory /data/hadoop/name2 has been successfully formatted.
13/09/10 16:39:33 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at Master/10.120.9.107
************************************************************/
出现Shutting down也没问题。
/data/hadoop/hadoop-2.7.2/sbin/start-all.sh
至少出现如下信息:
This script is Deprecated. Instead use start-dfs.sh and start-yarn.sh
Starting namenodes on [master]
master: starting namenode, logging to /data/hadoop/hadoop-2.7.2/logs/hadoop-hadoop-namenode-master.out
slave-1: starting datanode, logging to /data/hadoop/hadoop-2.7.2/logs/hadoop-hadoop-datanode-slave-1.out
slave-2: starting datanode, logging to /data/hadoop/hadoop-2.7.2/logs/hadoop-hadoop-datanode-slave-2.out
Starting secondary namenodes [0.0.0.0]
0.0.0.0: starting secondarynamenode, logging to /data/hadoop/hadoop-2.7.2/logs/hadoop-hadoop-secondarynamenode-master.out
starting yarn daemons
starting resourcemanager, logging to /data/hadoop/hadoop-2.7.2/logs/yarn-hadoop-resourcemanager-master.out
slave-1: starting nodemanager, logging to /data/hadoop/hadoop-2.7.2/logs/yarn-hadoop-nodemanager-slave-1.out
slave-2: starting nodemanager, logging to /data/hadoop/hadoop-2.7.2/logs/yarn-hadoop-nodemanager-slave-2.out
成功了~~
master端运行jps,会看到至少如下一些进程:
[hadoop@master hadoop-2.7.2]$ jps
26531 Jps
25292 SecondaryNameNode
25459 ResourceManager
25087 NameNode
slave端运行jps,会看到至少如下一些进程:
[hadoop@slave-1 hadoop-2.7.2]$ jps
10116 NodeManager
11281 Jps
9985 DataNode
打开浏览器,输入master的IP和端口号50070:http://10.120.9.107:50070/ 可以看到Hadoop Overview页面。如下图:
Summary表格中可以看到活跃的节点:
至此,最小化Hadoop集群配置完毕。
/data/hadoop/hadoop-2.7.2/sbin/stop-all.sh