hadoop(七) hadoop 集群安装
hadoop 集群安装
环境准备: 1 vmware ;2 centos7 minial;3 hadoop-2.6.4 ;4 jdk
新建四台虚拟机,分别命名为mini1,mini2,mini3,mini4
此处为什么要建四台虚拟机,namenode是管理datanode的,所以把namenode单独放在一个机器上维护,其他三台机器放置datanode和yarn。
四台虚拟机分别修改为静态ip(可以参考 之前文章hadoop(三) 环境准备 )
以为hdfs是运行在jvm上的,要为四台虚拟机分别装上jdk
1先在mini1上传jdk 到/usr/local/ 目录下
1.1解压jdk -zxvf jdk-8u171-linux-x64.tar.gz
1.2 再把解压后的文件分别复制到其他三台虚拟机上:
cd /usr/local/
(mini2) scp -r jdk1.8.0_171 (mini2的ip):/usr/local/ 选yes 输入你设置的密码
(mini3) scp -r jdk1.8.0_171 (mini3的ip):/usr/local/ 选yes 输入你设置的密码
(mini4) scp -r jdk1.8.0_171 (mini4的ip):/usr/local/ 选yes 输入你设置的密码
1.3 修改配置文件
mini1 vi /etc/profile
末尾添加以下内容:
export JAVA_HOME=/usr/local/jdk1.8.0_171
export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
export PATH=$PATH:${JAVA_HOME}/bin
复制到其他三台虚拟机:
cd /etc/profile
(mini2) scp -r profile (mini2的ip):/etc/ 输入你设置的密码
(mini3) scp -r profile (mini3的ip):/etc/ 输入你设置的密码
(mini4) scp -r profile (mini4的ip):/etc/ 输入你设置的密码
在各台机器上让配置生效 source /etc/profile
jdk 安装完成
2修改主机和ip的映射关系
vi /etc/hosts/
主机1 ip mini1
主机2 ip mini2
主机3 ip mini3
主机4 ip mini4
3创建 用户 因为在生产中很少使用root用户进行操作的,我们新建一个用户hadoop
在连接工具上上图位置选择,将命令发送到全部会话,
useradd hadoop # 新建用户hadoop
passwd hadoop #为hadoop设置密码
再两次次输入密码,
su hadoop 可以切换到hadoop用户
4 关闭防火墙
继续在全部会话的情况下执行关闭防火墙操作:
直接关闭防火墙: systemctl stop firewalld.service
禁止firewall开机启动 : systemctl disable firewalld.service
查看防火墙状态:firewall-cmd --state
5 安装hadoop
上传hadoop的文件到一台机器上mini1,
su hadoop
mkdir apps
把hadoop解压到apps
tar -zxvf hadoop-2.6.4.tar.gz -C apps/
cd etc/hadoop/
修改五个配置文件:hadoop-env.sh ,core-site.xml,hdfs-site.xml,mapred-site.xml.template,yarn-site.xml
hadoop-env.sh 修改jdk:
公共核心参数配置core-site.xml:
mkdir -p /home/hadoop/hadoop-2.6.4/tmp
主要配置了命名空间和进程产生数据的目录
hdfs配置 hdfs-site.xml:
mapreduce 配置 mapred-site.xml.template:
<!-- 指定mr运行在yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value> <!--默认是在local上跑,就不形成集群了-->
</property>
文件重命名:
mv mapred-site.xml.template mapred-site.xml
yarn 配置yarn-site.xml:
6分发到所有机器
把app复制到其他三台主机上
scp -r 主机:/home/hadoop/
7格式化
启动dfs前要格式化文件系统,因为文件系统是在linux空间上操作的,格式化就相当于在linux文件目录上生成一些文件目录
把hadoop环境变量添加上
export HADOOP_HOME=/home/hadoop/apps/hadoop-2.4.1
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
sudo scp -r /etc/profile 机器2主机:/etc/profile
sudo scp -r /etc/profile 机器3主机:/etc/profile
sudo scp -r /etc/profile 机器4主机:/etc/profile
source /etc/profile
开始格式化文件系统:
hadoop namenode -format
图中红框内表示格式化成功
但是至此我们还没有看到启动datanode
先尝试启动namenode
cd /home/hadoop/apps/hadoop-2.6.4/sbin/
hadoop-daemon.sh start namenode
可以访问namenode节点:
去mini2启动一个datanode节点,看namenode和datanode是否已经关联
hadoop-daemon.sh start datanode
再次刷新页面:发现datanode跟namenode是有关联的 这里有遇到了一个问题,因为之前在/etc/hosts中配置了自己主机的ip 和主机名 ,datanode启动后并未与namenode关联,应该 把namenode的ip 和绑定映射名也配置在文件中
再启动其余两台datanode,刷新网页查看:
现在因为登录机器机器需要输入密码,不便于批量 启动,需要配置ssh免密码登录:
在namenode机器上生成key,复制到其他datanode节点上
mini1: ssh-****** (点击三个enter),
再把key拷贝到各个文件系统:
ssh-copy-id mini1
ssh-copy-id mini2
ssh-copy-id mini3
ssh-copy-id mini4
测试是否已经可以免密登录 ssh mini2 ,验证成功后退出 exit 或者 ssh mini1 输入密码
要想在集群中使用start-all.sh和stop-all.sh 的话需要配置一下slaves
cd /home/hadoop/apps/hadoop-2.6.4/etc/hadoop
vi slaves
删除localhost(因为不在namenode节点启动datanode节点,单独维护,如果想启动保留localhost)
添加 mini2 mini3 mini4
执行 start-all.sh 如下图,在2,3,4,机器上使用jps命令检查datanode是否启动
至此hadoop的集群安装已经结束。