对于一个刚开始学习Spark的人来说,当然首先需要把环境搭建好,再跑几个例子,目前比较流行的部署是Spark On Yarn,作为新手,我觉得有必要走一遍Hadoop的集群安装配置,而不仅仅停留在本地(local)模式下学习,因为集群模式下跨多台机器,环境相对来说更复杂,许多在本地(local)模式下遇不到的问题在集群模式下往往出现,下面将结合实际详细介绍在 CentOS-6.x 系统上 hadoop-2.2.0 的集群安装(其他Linux发行版无太大差别),最后运行WordCount程序以验证Hadoop集群安装是否成功。
机器准备假设集群中有三台机器,机器可以为三台物理机或虚拟机,保证三台机器可以互相通信,其中一台机器作为master(运行NameNode和ResourceManager),另外两台机器作为slave或worker(运行DataNode和NodeManager)。下面我准备的机器相关配置如下,注意每台机器要保证用户名一致。
主机名用户名IP 地址master hadoop 192.168.100.10
slave1 hadoop 192.168.100.11
slave2 hadoop 192.168.100.12
工具准备
为了避免在三台机器中重复安装配置工作,我们可以只在master机器上做安装配置,然后直接将配置好的软件打包发到每台slave机器上解压即可,首先我们应配置master机器到其他机器ssh免密码登陆,这是所有后续安装工作的前提。
1. 配置host在master机器中配置host,在/etc/hosts文件中添加以下配置:
192.168.100.10 master 192.168.100.11 slave1 192.168.100.12 slave2 2. 配置master免密码登录首先运行如下命令生成公钥:
[hadoop@master ~]$ ssh-keygen -t rsa将公钥拷贝到每台机器中,包括本机,以使得ssh localhost免密码登录:
[hadoop@master ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@master [hadoop@master ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@slave1 [hadoop@master ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@slave2为了更好的管理集群,切换到root身份,重复上述ssh无密码设置过程,保证root身份也无能密码登录:
[root@master ~]$ su root [root@master ~]$ ssh-keygen -t rsa [root@master ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub root@master [root@master ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub root@slave1 [root@master ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub root@slave2完成上述操作后,切换回hadoop用户,现在master机器可以ssh免密码的登录集群中每台机器,下面我们开始现在master机器中开始安装配置hadoop。
JDK安装从Oracle官网下载jdk,放到/home/hadoop目录下(后续所有安装包默认安装在/home/hadoop目录下),我下载的版本为jdk1.7.0_40,解压后设置jdk的环境变量,环境变量最好不要设置为全局的(在/etc/profile中),只设置当前用户的环境变量即可.
[hadoop@master ~]$ pwd /home/hadoop [hadoop@master ~]$ vim .bash_proflie # Java ENVIRONMENT export JAVA_HOME=$HOME/jdk1.7.0_40 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar [hadoop@master ~]$ source .bash_proflie Hadoop安装从Apache官网下载hadoop发行版,放到/home/hadoop目录下,我下载的版本为hadoop-2.2.0,解压软件包后,首先设置hadoop的环境变量。
[hadoop@master ~]$ vim .bash_proflie # HADOOP ENVIRONMENT export HADOOP_HOME=$HOME/hadoop-2.2.0 export HADOOP_MAPRED_HOME=$HADOOP_HOME export HADOOP_COMMON_HOME=$HADOOP_HOME export HADOOP_HDFS_HOME=$HADOOP_HOME export YARN_HOME=$HADOOP_HOME export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop export HDFS_CONF_DIR=$HADOOP_HOME/etc/hadoop export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop export HADOOP_LOG_DIR=$HADOOP_HOME/logs [hadoop@master ~]$ source .bash_proflie下面我们开始配置hadoop,进入hadoop的配置目录,首先我们先在hadoop-env.sh和yarn-env.sh中设置好jdk的路径,然后开始修改hadoop相关配置文件。
配置hdfs在配置文件hdfs-site.xml中添加以下内容。
12
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 <configuration>
<property>
<!-- hdfs地址 -->
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<!-- hdfs中每一个block所存的份数,我这里设置1份,默认是3份 -->
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<!-- 开启hdfs web访问 -->
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
配置yarn