准备工作:
- 3台装有CentOS的虚拟机,分别命名为hadoop.mini01/02/03。推荐采用最小安装。
- 虚拟机上需要安装JDK(JAVA_HOME本文使用 /usr/local/jvm/jdk1.8.0_172)
- 本地可使用SecureCRT访问以上3台虚拟机
- 在hadoop.apache.org下载hadoop(2.6.5版下载地址)
集群安装步骤:
1.添加hadoop用户,输入如下指令:
sudo addgroup hadoop
sudo adduser --ingroup hadoop hadoop
一些老版本的命令是:
sudo groupadd hadoop
sudo useradd -g hadoop hadoop
(前一个hadoop为组名,后面才是用户名,用户名可以自己取,我方便起见写了hadoop。后面会让你输入一个密码,是你登录这个用户时的密码,键入之后,出现任何提示都直接回车表示默认)
输入如下指令让hadoop可使用sudo命令:
sudo vim /etc/sudoers
在"root ALL=(ALL) ALL"下面,加上:
hadoop ALL=(ALL:ALL) ALL
输入su hadoop即可登入该用户
注:三个虚拟机都需要进行上面的操作(可以先做一份,然后克隆两份,再进行修改,记得登录hadoop用户,接下来的配置都在这个用户下进行配置)。之后的操作2和操作3只需在一台虚拟机进行。
2.解压HADOOP:
通过SFTP将本地HADOOP包上传至~/apps后,解压:
输入以下命令:
tar -zxvf ~/apps/hadoop-2.6.5.tar.gz -C ~/apps/
3.配置HADOOP和相关初始化:
①为hadoop-env.sh加JDK环境变量
vim ~/apps/hadoop-2.6.5/etc/hadoop/hadoop-env.sh
此处将JAVA_HOME改成虚拟机JDK目录的绝对路径(因为SSH启用时,无法读到PATH)。
②配置core-site.xml:
键入命令:
vim ~/apps/hadoop-2.6.5/etc/hadoop/core-site.xml
修改configuration中的内容(hadoop.mini01须替换成你的机器Hostname):
<configuration>
<!--指定namenode的地址-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop.mini01:9000</value>
</property>
<!--用来指定使用hadoop时产生文件的存放目录-->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hdpdata</value>
</property>
<!--用来设置检查点备份日志的最长时间-->
<!--<name>fs.checkpoint.period</name> -->
<!--<value>3600</value>-->
</configuration>
③配置hdfs-site.xml:
键入命令:
vim hdfs-site.xml
修改configuration中的内容(默认可以不用配置):
<configuration>
<!--指定hdfs保存数据的副本数量,必要-->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.secondary.http.address</name>
<value>192.168.12.201:50090</value>
</property>
</configuration>
④配置mapred-site.xml.template (如果不进行配置,hadoop将在local运行)
键入命令:
vim mapred-site.xml.template
修改configuration中的内容:
<configuration>
<!--告诉hadoop以后MR(Map/Reduce)运行在YARN上,必要-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
将文件重命名,键入以下命令:
mv mapred-site.xml.template mapred-site.xml
⑤配置yarn-site.xml
键入命令:
vim yarn-site.xml
修改configuration中的内容:
<configuration>
<!--指定Yarn的老大(ResourceManager)的地址,必要-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop.mini01</value>
</property>
<!--nomenodeManager获取数据的方式是shuffle,必要-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!--Yarn打印工作日志-->
<!--<property> -->
<!-- <name>yarn.log-aggregation-enable</name> -->
<!-- <value>true</value> -->
<!--</property> -->
<configuration>
(注:上述4个site文件之所谓分开配置,是为了方便将来需要变更时单独管理配置)
4.分发已配置好的hadoop至其他虚拟机:
键入命令:scp -r ~/apps hadoop.mini02:/home/hadoop/
其中红色部分为所需Hadoop虚拟机的Hostname(须自行事先配置,有几台就做几次)。
5.进行hdfs初始化:
①配置HDFS进profile环境变量:
键入命令:
cd ~/apps/hadoop-2.6.5/
pwd
获取hadoop路径。
键入命令:
sudo vim /etc/profile
在文件中加入HADOOP_HOME,并修改PATH:
export HADOOP_HOME=/home/hadoop/apps/hadoop-2.6.5
PATH项末尾加入:
:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin
将修改好的profile文件分发至其他机器:
键入命令:
hadoop.mini02:/etc/
其中红色部分为所需Hadoop虚拟机的Hostname(须自行事先配置,有几台就做几次)。
完成分发后,在01机上键入命令:
source /etc/profile
②HDFS进行初始化:
在namenode定义的虚拟机上,键入命令:
hadoop namenode -format
提示初始化成功!