集群准备
-
准备3台客户机(关闭防火墙、静态ip,主机映射、主机名称),主机名称分别hadoop1,hadoop2,hadoop3
-
三台虚拟机安装好jdk,并配置环境变量
-
配置ssh,免密登录
(1)在每台虚拟机上vi /etc/hosts
将集群中的虚拟机ip地址和主机名绑定,如
(2) 在每台虚拟机上生成公私钥
ssh-keygen -t rsa -P ''
(3) 拷贝私钥给集群中的每个虚拟机(本身和其他两个虚拟机,一共拷贝九次)
每个虚拟机上都要执行以下命令
ssh-copy-id hadoop1
ssh-copy-id hadoop2
ssh-copy-id hadoop3
使用xshell工具可以同时执行
集群规划
hadoop1 | hadoop2 | hadoop3 | |
---|---|---|---|
HDFS | NameNode DataNode | DataNode | SecondaryNameNode DataNode |
YARN | NodeManager | ResourceManager NodeManager | NodeManager |
修改配置文件
注:我们可以先配置一台的虚拟机hadoop1上的hadoop,然后通过远程拷贝命令,将配置完成的hadoop拷贝到另外两台虚拟机上
- hadoop-env.sh
修改JAVA_HOME为jdk路径
- core-site.xml
在configuration标签内添加如下内容
<!-- 指定HDFS中NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop1:9000</value>
</property>
<!-- 指定hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop260/data/tmp</value>
</property>
- hdfs-site.xml
在configuration标签内添加如下内容
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop3:50090</value>
</property>
-
yarn-env.sh
添加jdk路径
-
yarn-site.xml
在configuration标签内添加如下内容
<!-- reducer获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定YARN的ResourceManager的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop2</value>
</property>
- mapred-site.xml
在configuration标签内添加如下内容
<!-- 指定mr运行在yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
vi slaves
添加集群主机名
hadoop1
hadoop2
hadoop3
- 远程拷贝命令,将配置完成的hadoop拷贝至其他虚拟机上
scp -r /opt/hadoop260 root@hadoop2:$PWD
scp -r /opt/hadoop260 root@hadoop3:$PWD
- 配置每台虚拟机hadoop环境
vi /etc/profile
文末添加内容如下
保存并激活source /etc/profile
export HADOOP_HOME=/opt/soft/hadoop260
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_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
export HADOOP_INSTALL=$HADOOP_HOME
启动集群
-
在第一台虚拟机hadoop1上,格式化hdfs
hdfs namenode -format
-
在hadoop1启动hdfs
start-dfs.sh
-
在hadoop2启动Yarn
start-yarn.sh
时间同步
- 为每台虚拟机安装ntp
yum -y install ntp
vi /etc/ntp.conf
# 添加(添加默认的一个内部时钟数据,使用它为局域网用户提供服务。)
server 127.127.1.0
fudge 127.127.1.0 stratum 10
vi /etc/sysconfig/ntpd
添加内容如下(让硬件时间与系统时间一起同步)
SYNC_HWCLOCK=yes
-
重新启动ntpd
systemctl restart ntpd
-
同步hadoop2和hadoop3的时间与hadoop1的时间一致
ntpdate hadoop1
分别在hadoop2和hadoop3上执行 -
每十分钟同步一次
crontab -e
添加如下内容
*/10 * * * * /usr/sbin/ntpdate hadoop2