ps:写此博客记录Hadoop集群的安装配置的步骤,方便日后学习回顾,也希望给各位带来帮助。
Centos版本:6.7 VMware版本:15.5.1 JDK版本:jdk-7u67
1.主机名修改
切换至root,进入/etc/sysconfig/network文件中修改HOSTNAME=hadoop1,方便之后的操作。
vi /etc/sysconfig/network修改之后退出重启,再次进入终端输入hostname命令,若为hadoop1则修改主机名成功。
2.IP地址配置
设置静态IP,点击左上角的编辑,进入虚拟网络编辑器 进入之后的界面,再点击NAT设置 查看自己IP的数据之后,进入/etc/sysconfig/network-scripts/ifcfg-eth0文件修改
vi /etc/sysconfig/network-scripts/ifcfg-eth0将BOOTPROTO="dhcp"修改为BOOTPROTO=“static”,然后添加如下几行
IPADDR=192.168.204.100 NETMASK=255.255.255.0 GATEWAY=192.168.204.2 DNS1=192.168.204.2注意,这里的数据是我电脑的数据,进行配置的时候可查看上图示例里的数据GATEWAY和DNS1是网关的IP,NETMASK是子网掩码的数据,IPADDR的前三位与网关的IP的前三位一样,最后一位可与我一样设置为100,如果文件中的ONBOOT不是设置为yes的话就将其改为yes。配置完之后保存退出文件修改内容。
再次点编辑,选中NAT模式之后,点击下方的更改设置,将红线处的勾取消
3.主机名与ip地址做映射 进入/etc/hosts文件
vi /etc/hosts并在末尾追加
192.168.204.100 hadoop1其中192.168.204.100是之前配置的IPADDR的地址,按照自己之前配置的修改即可。
通过映射之后,局域网中,可以通过这个名字定位具体的计算机,集群各台服务器之间相互访问更方便。
4.防火墙关闭 输入命令chkconfig --level 0123456 iptables off执行即可
chkconfig --level 0123456 iptables off关闭防火墙可以方便局域网中不同计算机之间的通信。(没有关闭防火墙的话,部分服务不能跨计算机进行访问,即部分端口是关闭的)
5.selinux关闭 输入getenforce命令
getenforce如果结果显示permissive或disabled,则可以跳过此步骤。如果不是,那么进入/etc/selinux文件
vi /etc/selinux修改SELINUX=enforcing为SELINUX=permissive,保存修改退出,重启系统。这样可以方便局域网中不同的计算机之间的通信。
6.JDK安装 从网上下载jdk1.7以上64位linux版本,这里安装jdk-7u67-linux-x64.rpm版本,(这里给出我的安装包,下载安装包,提取码是1022)下载后进入root执行
rpm -ivh jdk-7u67-linux-x64.rpm当然这里的jdk安装包路径也是取决于你下载的位置,我的安装包放在桌面,所以我的安装命令是
rpm -ivh /home/centos/Desktop/jdk-7u67-linux-x64.rpm安装成功后,输入java -version查看,如果出现如下图示则安装成功 安装好jdk之后,还需要配置jdk的环境变量。进入/etc/profile文件
vi /etc/profile然后在文件的末尾加上下面两行代码
export JAVA_HOME=/usr/java/default export PATH=$PATH:$JAVA_HOME/bin保存修改退出,重启系统。
7.yum安装配置 切换成root用户,在终端输入命令下载repo
wget https://archive.cloudera.com/cdh5/redhat/6/x86_64/cdh/cloudera-cdh5.repo -P /etc/yum.repos.d/因为我们安装的是cdh5.10.1版本的Hadoop,所以我们还需要修改cloudera-cdh5.repo文件,输入命令
vi /etc/yum.repos.d/cloudera-cdh5.repo将文件中的baseurl=https://archive.cloudera.com/cdh5/redhat/6/x86_64/cdh/5/改成baseurl=https://archive.cloudera.com/cdh5/redhat/6/x86_64/cdh/5.10.1/。
输入命令
yum clean all清理缓存残留的yum信息,再输入命令
yum list | grep hadoop查看Hadoop信息,如果出现如下图示则表示成功
伪分布式其实就是把所有的进程安装在同一台服务器上,在同一台服务器上拉起所有的进程。
1.安装 我们需要安装Namenode、SeconderayNamenode、Datanode、Resourcemanager、Nodemanager、Jobhistoryserver, 输入以下命令
yum install -y hadoop-hdfs-namenode.x86_64 yum install -y hadoop-hdfs-secondarynamenode.x86_64 yum install -y hadoop-hdfs-datanode.x86_64 yum install -y hadoop-yarn-resourcemanager.x86_64 yum install -y hadoop-yarn-nodemanager.x86_64 yum install -y hadoop-mapreduce-historyserver.x86_64全部安装完即可,安装之后,可输入命令
cat /etc/passwd若结果是 则表示安装成功。
2.重要配置 通过rpm包安装,配置文件一般都在/etc/hadoop/conf目录下,所以先输入命令
cd /etc/hadoop/conf进入core-site.xml文件
vi core-site.xml文件中只有
<configuration> </configuration>在两者之间加入这几行代码
<property> <name>fs.defaultFS</name> <value>hdfs://hadoop1:8020</value> </property>保存修改退出,再进入hdfs-site.xml文件,如同上述一样,文件中有
<configuration> <property> <name>dfs.namenode.name.dir</name> <value>file:///var/lib/hadoop-hdfs/cache/hdfs/dfs/name</value> </property> </configuration>我们在其中加入几行代码
<property> <name>dfs.permissions.superusergroup</name> <value>hadoop</value> </property>保存修改退出。
3.本地存储路径配置 进入hdfs-site.xml文件,将文件中的namenode中的value改成如下代码所示
<property> <name>dfs.namenode.name.dir</name> <value>/data/nn</value> </property>同时,在其中再加入这几行代码,步骤儒上述一样
<property> <name>dfs.datanode.data.dir</name> <value>/data/dn</value> </property>保存修改退出。
因为系统中还并未存在/data/dn和/data/nn这两个文件,所以输入命令创建
mkdir -p /data/nn /data/dn并将其归属于hdfs用户
chown -R hdfs:hdfs /data/nn /data/dn再修改两个目录权限为700,只允许hdfs用户进行读写执行
chmod 700 /data/nn /data/dn4.Secondary NameNode配置 同样是hdfs-site.xml文件
cd /etc/hadoop/conf进入文件,在其中加入如下代码
<property> <name>dfs.namenode.http-address</name> <value>hadoop1:50070</value> <description> The address and the base port on which the dfsNameNode Web UI will listen. </description> </property> <property> <name>dfs.namenode.secondary.http-address</name> <value>hadoop1:50090</value> <description> The address and the base port on which the dfsNameNode Web UI will listen. </description> </property>5.Yarn和MapReduce配置 进入yarn-site.xml文件,将<configuration></configuration>之间的内容删除,加入如下代码
<property> <name>yarn.resourcemanager.hostname</name> <value>hadoop1</value> </property> <property> <description>Classpath for typical applications.</description> <name>yarn.application.classpath</name> <value> $HADOOP_CONF_DIR, $HADOOP_COMMON_HOME/*,$HADOOP_COMMON_HOME/lib/*, $HADOOP_HDFS_HOME/*,$HADOOP_HDFS_HOME/lib/*, $HADOOP_MAPRED_HOME/*,$HADOOP_MAPRED_HOME/lib/*, $HADOOP_YARN_HOME/*,$HADOOP_YARN_HOME/lib/* </value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.local-dirs</name> <value>/data/yarn/local</value> </property> <property> <name>yarn.nodemanager.log-dirs</name> <value>/data/yarn/logs</value> </property> <property> <name>yarn.log.aggregation-enable</name> <value>true</value> </property> <property> <description>Where to aggregate logs</description> <name>yarn.nodemanager.remote-app-log-dir</name> <value>/var/log/hadoop-yarn/apps</value> </property>同时也要进入mapred-site.xml文件,在其中加入如下代码
<property> <name>mapreduce.framework.name</name> <value>yarn</value> </property>保存修改退出。
与之前一样,要创建文件,输入命令
mkdir -p /data/yarn/local /data/yarn/logs然后修改文件的归属用户
chown yarn:yarn /data/yarn/local /data/yarn/logs最后修改权限
chmod 755 /data/yarn/local /data/yarn/logs6.配置hadoop-env.sh 同样在/etc/hadoop/conf路径下,进入hadoop-env.sh文件中,并在其中加入如下代码
export JAVA_HOME=/usr/java/default保存退出。
7.配置JobHistory Server 进入mapred-site.xml文件中,加入如下代码
<property> <name>mapreduce.jobhistory.address</name> <value>hadoop1:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>hadoop1:19888</value> </property>保存退出。
8.格式化Namenode 输入如下代码进行格式化
sudo -u hdfs hdfs namenode -format如果结果出现Exiting with status 0则表示成功,即最后末尾几行如图所示 这里提醒一下,在格式化之前要保证之前的配置都没有问题,否则之后修改会很麻烦。
9.启动服务 这里启动相应的服务,启动NameNode服务,输入如下命令
service hadoop-hdfs-namenode start启动DataNode服务
service hadoop-hdfs-datanode start启动resourcemanager服务
service hadoop-yarn-resourcemanager start启动nodemanager服务
service hadoop-yarn-nodemanager start启动secondarynamenode服务
service hadoop-hdfs-secondarynamenode start启动historyserver服务
service hadoop-mapreduce-historyserver start全部启动之后,输入jps命令,如果结果是图示则服务启动成功
1.集群规划 说明:本次实验我们定义的三台主机名分别为hadoop1、hadoop2、hadoop3对应的ip地址是根据我自己的环境来设置的,大家可以根据自己的实际情况来设置ip地址。
hadoop1(192.168.204.100)hadoop2(192.168.204.101)hadoop3(192.168.204.102)NameNodeSecondaryNameNodeResourceManagerDataNodeDataNodeDataNodeNodeManagerNodeManagerNodeManagerJobHistoryServer2.创建新的虚拟机
在前边的伪分布式中我们已经有一台虚拟机hadoop1,接下来我们可以在hadoop1的基础之上克隆两台虚拟机。废话不多说我们可以克隆新的虚拟机,克隆前先关闭hadoop1。
右击虚拟机名称点击管理,选中克隆,基本设置都是默认,直接点击下一步,但是这里 我们要选择创建完整克隆。
3.hadoop2虚拟机配置和整理
克隆完之后,进入hadoop2虚拟机(这是我自己定义的名字,即进入刚刚克隆的虚拟机),需要清除DataNode数据写入目录信息(因为目录里有DataNode的编号信息,如不清除,DataNode只能启动一个)。登陆hadoop2后切换到root账号,root密码为我们在创建hadoop1时设定的密码。然后执行删除命令:
rm -rf /data/dn/*然后我们修改它的主机名,输入命令
vi /etc/sysconfig/network将文件中的hadoop1改为hadoop2。
因为是克隆hadoop1,克隆后的eth0的MAC地址跟hadoop1一样,所以我们需要重新设定mac地址。执行如下命令删除/etc/udev/rules.d/70-persistent-net.rules
rm -rf /etc/udev/rules.d/70-persistent-net.rules然后重启hadoop2。
重启之后,修改新生成/etc/udev/rules.d/70-persistent-net.rules,输入命令
vi /etc/udev/rules.d/70-persistent-net.rules进入文件,将其中的NAME的值改成NAME=“eth0”,复制ATTR{address}的值,保存修改退出后,输入命令
vi /etc/sysconfig/network-scripts/ifcfg-eth0进入文件后,将其中的HWADDR的值改成刚才复制ATTR{address}的值,再将IPADDR的值的最后一位改为101(这是我自己的设定),然后保存修改退出。全部完成后重启系统,再次启动后进入终端切换为root帐号,输入命令
service network restart出现如下结果则表示成功 同样的方法再次克隆hadoop3,但是最后的IPADDR的值的最后一位改为102。
4.SSH免密码登陆配置
在hadoop1、hadoop2和hadoop3的root账户下分别执行
ssh-keygen -t rsa然后按三个回车即可,在hadoop1上执行
cat /root/.ssh/id_rsa.pub>>/root/.ssh/authorized_keys然后执行
scp /root/.ssh/authorized_keys root@192.168.204.101:/root/.ssh scp /root/.ssh/authorized_keys root@192.168.204.102:/root/.ssh这里192.168.204.101和192.168.204.102是hadoop2和hadoop3的IP地址,这里根据自己的设置来输入,之后再输入
vi /etc/hosts在尾行加入
192.168.204.101 hadoop2 192.168.204.102 hadoop3保存修改退出,这里根据自己情况输入。
在hadoop2上,输入命令
cat /root/.ssh/id_rsa.pub>>/root/.ssh/authorized_keys scp /root/.ssh/authorized_keys root@192.168.204.100:/root/.ssh scp /root/.ssh/authorized_keys root@192.168.204.102:/root/.ssh再输入命令
vi /etc/hosts在文件尾行加入如下命令
192.168.204.100 hadoop1 192.168.204.102 hadoop3保存退出。
在hadoop3上,输入命令
cat /root/.ssh/id_rsa.pub>>/root/.ssh/authorized_keys scp /root/.ssh/authorized_keys root@192.168.204.100:/root/.ssh scp /root/.ssh/authorized_keys root@192.168.204.101:/root/.ssh同样再进入/etc/hosts文件,在尾行加入如下
192.168.204.100 hadoop1 192.168.204.101 hadoop2保存退出。完成这些步骤后即可免密登录。
5.进程禁用
前边我们在hadoop1上搭建了伪分布式,上边安装了hadoop集群所有的进程。根据我们分布式规划,我们需要关闭SecondaryNameNode和ResourceManager进程。 在hadoop1执行下边命令
chkconfig hadoop-hdfs-secondarynamenode off chkconfig hadoop-yarn-resourcemanager off在hadoop2上输入命令
chkconfig hadoop-hdfs-namenode off chkconfig hadoop-yarn-resourcemanager off chkconfig hadoop-mapreduce-historyserver off在hadoop3上输入命令
chkconfig hadoop-hdfs-namenode off chkconfig hadoop-hdfs-secondarynamenode off chkconfig hadoop-mapreduce-historyserver off6.修改resourcemanager的主机名
在hadoop1上输入命令
vi /etc/hadoop/conf/yarn-site.xml将文件中的value值改为hadoop3,如下
<property> <name>yarn.resourcemanager.hostname</name> <value>hadoop3</value> </property>hadoop2和hadoop3也是一样的操作。
7.格式化Namode
这里先关闭服务(我们之前在hadoop1中开启过)
service hadoop-hdfs-namenode stop service hadoop-hdfs-datanode stop service hadoop-yarn-resourcemanager stop service hadoop-yarn-nodemanager stop service hadoop-hdfs-secondarynamenode stop service hadoop-mapreduce-historyserver stop我们之前格式化过一次,所以先在hadoop1,hadoop2,hadoop3中输入命令
rm -rf /data/dn/current然后在hadoop1中输入命令
sudo -u hdfs hdfs namenode -format再将所有datanode中的文件/data/dn/current/VERSION中cluster的值改成与/data/nn/current/VERSION中的cluster一致。
8.启动服务
这里先在hadoop1,hadoop2,hadoop3中输入命令
vi /etc/hadoop/conf/hdfs-site.xml将文件中的 50090前的hadoop1改成hadoop2,保存修改退出,然后开始输入命令启动服务。
启动服务是有顺序的,先在hadoop1输入命令
service hadoop-hdfs-namenode restart启动服务后在hadoop2上输入命令
service hadoop-hdfs-secondarynamenode restart之后在hadoop1,hadoop2,hadoop3中输入命令
service hadoop-hdfs-datanode restart全部启动后在hadoop3上输入
service hadoop-yarn-resourcemanager restart再到hadoop1,hadoop2,hadoop3中输入命令
service hadoop-yarn-nodemanager restart最后到hadoop1中输入命令
service hadoop-mapreduce-historyserver restart启动即可。启动之后可在hadoop1,hadoop2,hadoop3中输入jps查看是否启动,如果hadoop1中结果如图所示
则成功启动,hadoop2和hadoop3分别是 至此hadoop集群安装和配置完成。
