CentOS中hadoop的安装
安装环境
- 虚拟机上三台centos系统
- 使用NET模式连接有线网络
- 在命令行使用ifconfig命令查看静态IP地址
- Xshell5安装在Windows上,用于连接虚拟机
所需软件下载
-
Hadoop官网下载Hadoop:http://hadoop.apache.org/
-
JDK官网下载:https://www.oracle.com/technetwork/java/javase/downloads/jdk13-downloads-5672538.html
-
将所下软件拷贝至主虚拟机下
JDK安装及配置
- 将安装包解压至/software
涉及命令:tar -zxvf jdk-8u161-linux-x64.tar.gz -C /software/ - 配置JDK环境,将JDK路径配置到/etc/profile文件下
- 刷新文件,查看JAVA版本,测试JDK是否安装成功
Hadoop安装及配置
-
将Hadoop安装包解压至/software下
-
将Hadoop环境配置配置以及检测Hadoop是否安装成功
集群配置
在主服务器上配置
配置hosts文件(路径/etc,文件hosts)将三台服务器静态IP写进去,可以给各个服务器起别名
配置HDFS(路径:/software/hadoop-2.7.3/etc/hadoop)
- 配置hadoop-env.sh,加入JDK安装路径
export JAVA_HOME=/software/jdk1.8.0_161
2. 配置core-site.xml
<!-- 指定HDFS中NameNode的地址-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
<!-- 指定Hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/software/hadoop-2.7.2/data/tmp</value>
</property>
3. 配置hdfs-site.xml
<!--指定HDFS副本的数量 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
配置YARN
- 配置yarn-env.sh,配置JAVA_HOME
export JAVA_HOME=/software/jdk1.8.0_161
- 配置yarn-site.xml
<!-- Reducer获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!--指定YARN的ResourceManager的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>localhost</value>
</property>
3. 配置mapred-env.sh,增加JAVA_HOME
export JAVA_HOME=/software/jdk1.8.0_161
- 配置mapred-site.xml,将mapred-site.xml.template重新命名为mapred-site.xml
mv mapred-site.xml.template mapred-site.xml
<!--指定MR运行在YARN上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
配置历史服务器
配置mapred-site.xml,增加以下配置
<!-- 历史服务器端地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>localhost:10020</value>
</property>
<!-- 历史服务器web端地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>localhost:19888</value>
</property>
配置slaves文件,即从服务器结点可让三台服务器同步
将配置环境拷贝至两台从服务器上
配置主服务器免登录访问从服务器
- 为每个节点分别产生公、私密钥配置,使用ssh-keygen命令可以为本服务器生成公钥(id_dsa.pub)和私钥(Id_dsa),要求输入passphrased的时候直接敲回车。
参考命令:ssh-keygen -t dsa -f ~/.ssh/id_dsa
再使用cp命令,将公钥文件复制成authorized_keys文件。
参考命令:cp ~/.ssh/id_dsa.pub ~/.ssh/authorized_keys
此时,在本服务器上生成公钥和私钥的步骤基本完成,使用ssh 命令登录本机不会再要求输入密码(如果是第一次登录会要求确认是否继续连接),成功之后,也在另外两台服务器上执行相同的操作!!!
- 让主结点能通过SSH免密码登录两个子结点
将主服务器的公钥文件内容添加到从服务器的authorized_keys文件里,就可以实现主服务器免密码登录从服务器了。使用scp命令,将主服务器的公钥文件id_dsa.pub复制到从服务器上,并命令为master.pub。
参考命令:scp ~/.ssh/id_dsa.pub root@slave1:~/.ssh/master.pub
再将上一步生成的master.pub文件内容追加到slave1的authorized_keys文件中,可以登录到slave1上去操作,也可以在master上使用ssh命令远程操作。
参考命令:
ssh root@slave1"cat ~ /.ssh/master.pub>> ~ /.ssh/authorized_keys"
按照上面的方法,让master可以ssh免密码访问另外一台从服务器!!!!
将Hadoop复制到各从服务器
将配置好的Hadoop集群复制到从服务器上
参考命令:scp -r /software root@slave1: /software
scp -r /software root@slave2:/software
将/etc/profile文件拷贝至从服务器
启动Hadoop,并测试Hadoop是否启动成功
-
格式化namenode,启动服务
命令:bin/hdfs namenode -format
sbin/./start-all.sh
-
启动Hadoop
hadoop服务如果启动成功了,可以在主服务器上查看到NameNode ,SecondaryNameNode,ResourceManager 三个服务,从服务器上看到NodeManager, DataNode 两个服务。
主服务器:
slave1验证:
slave2验证:
HDFS的Web端
历史服务器启动
YARN的Web端验证
历史服务器Web端
启动服务时DataNode启动不起来
原因:多次格式化NameNode
格式化NameNode,会产生新的集群id,导致NameNode和DataNode的集群id不一致,集群找不到已往数据。所以,格式NameNode时,一定要先删除data数据和log日志,然后再格式化NameNode。