您的位置:首页 > 运维架构

Hadoop 2.7.2 最小集群搭建

2017-03-22 20:43 337 查看

0 准备工作

操作系统: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
记得主机名一定要小写!一定要小写!一定要小写!而且不能有别的其它无关域名,否则自己排错去吧...

1 安装配置JAVA

在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)

2 安装配置Hadoop

2.1 编译Hadoop

如果服务器是32位的,那么下载Hadoop编译好的包直接部署没问题。但是,猫哥的三台Server都是64位的。所以问题来了。或者找别人在64位机上编译好的,或者自己编译。

自己编译步骤,请移步另一篇猫哥原创文: http://blog.csdn.net/972301/article/details/62231113
三台server同时进行,编译好的结果,移动到 /data/hadoop/hadoop-2.7.2/

2.2 配置Hadoop

添加两个目录:

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
一定要强行设置,不要用默认的。

2.3 添加系统环境变量

编辑/etc/profile,追加如下内容:

export HADOOP_HOME=/data/hadoop/hadoop-2.7.2
export PATH=$PATH:$HADOOP_HOME/bin

使之生效:

source /etc/profile

2.4 验证Hadoop

运行命令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 <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 <srcurl> <desturl> copy file or directories recursively
archive -archiveName NAME -p <parent path> <src>* <dest> 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.


3 设置ssh无密码访问

首先,切换成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不认!

4 集群配置(所有节点相同)

为了方便,直接在master上配置,后面推送到所有slave节点即可。所有配置文件都在 $HADOOP_HOME/etc/hadoop/

此处是Hadoop配置的关键!

4.1 core-site.xml

添加如下内容:

<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
<description>HDFS的URI,文件系统://namenode标识:端口号</description>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/data/hadoop/tmp</value>
<description>namenode上本地的hadoop临时文件夹</description>
</property>
</configuration>

4.2 hdfs-site.xml

添加如下内容:

<configuration>
<property>
<name>dfs.name.dir</name>
<value>/data/hadoop/hdfs/name1,/data/hadoop/hdfs/name2</value>
<description>namenode上存储hdfs名字空间元数据 </description>
</property>
<property>
<name>dfs.data.dir</name>
<value>/data/hadoop/hdfs/data1,/data/hadoop/hdfs/data2</value>
<description>datanode上数据块的物理存储位置</description>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
<description>副本个数,配置默认是3,应小于datanode机器数量</description>
</property>
</configuration>

4.3 yarn-site.xml

添加如下内容:

<configuration>

<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8099</value>
</property>
</configuration>

4.4 mapred-site.xml

默认没有这个文件,但是可以执行查找命令,可以找到一个template

find /data/hadoop/hadoop-2.7.2/ -name mapred-site.xml.template

拷贝成mapred-site.xml,再添加如下内容:

<configuration>
<property>
<name>mapred.job.tracker</name>
<value>master:9001</value>
4000
</property>
<property>
<name>mapred.local.dir</name>
<value>/data/hadoop/tmp</value>
</property>
</configuration>

4.5 添加 masters 和 slaves 文件

在/data/hadoop/hadoop-2.7.2/etc/hadoop/目录下,添加(如果没有)或者编辑 masters 和 slaves两个文件。
masters文件中放一行,就是master节点的主机名。
slaves文件中放所有slave节点的主机名,每个一行。有几个slave节点放几行。
记得:涉及主机名的都是小写字母,而且不要有多余的内容。

4.6 推送配置内容:

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/

5 启动Hadoop集群

5.1 先格式化一个hdfs分区

/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也没问题。

5.2 启动集群

/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

成功了~~

5.3 验证

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集群配置完毕。

6 关闭集群

/data/hadoop/hadoop-2.7.2/sbin/stop-all.sh



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hadoop