hadoop集群搭建
1 环境说明
hadoop2.7.3
下载地址 :http://mirror.bit.edu.cn/apache/hadoop/common/
两台主机,主机名和IP分别为:
master 172.18.68.119
slave01 172.18.68.88
master作为主节点,slave01作为副节点
2 hadoop环境搭建
2.1 设置ssh免密登录
2.1.1 创建hadoop用户
建议为hadoop创建一个特定的操作用户hadoop,创建过程如下:
1)以用户root登录
2)执行如下命令
$ useradd hadoop //创建hadoop用户
$ passwd hadoop //设置hadoop用户的密码
至此,新用户hadoop已创建成功,可执行下面两个步骤查看已创建的用户。
$ cd /home
$ ls
2.1.2 更改主机名和hosts文件
以root用户登录。
1)修改主机名
$ vi /etc/hostname
测试环境下,172.18.68.119作为主节点,修改其主机名为master,172.18.68.88作为从结点,修改主机名为slave01
*注意:主机名不要带有下划线_、点.符号,否则Hadoop启动会有问题,主机名的命名规则参照下图。
2)修改hosts文件
$vi /etc/hosts (注意 这里要配置要无密码登录的所有机器的Ip和名称,文件后面追加)
3)重启
$ shutdown -r now
2.1.3 配置免密登录
1)以hadoop用户登录
2)执行以下命令,修改“.ssh”目录权限
chmod755 ~/.ssh
备注:如果提示“.ssh”目录不存在,分别执行下面命令,创建目录并授权:
a. $ cd /home/hadoop/
$ mkdir ~/.ssh
创建目录
b.$ chmod 755 ~/.ssh
修改目录权限
3)生成公钥
$cd /home/hadoop/.ssh 进入ssh目录
$ssh-****** -t rsa 执行命令生成公钥,有提示,一直按“enter”键
备注:生成命令后,会生成下图所示的信息,如果提示的信息中[email protected]后面不是本机别名,说明主机名称需要重新配置一次,配置主机名后重启,然后删除/home/hadoop/下的.ssh目录,重复步骤1)-3),直至后缀是本机别名。
4)把生成的**id_rsa.pub追加到key中去
$cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
5)修改文件authorized_keys权限
$ chmod 600 ~/.ssh/authorized_keys
6)设置SSH配置
用root用户登录服务器修改SSH配置文件"/etc/ssh/sshd_config"的下列内容
$vi /etc/ssh/sshd_config
7)重启ssh服务
设置完后,重启SSH服务,才能使设置生效
$service sshd restart
8)退出root登录,使用hadoop普通用户验证是否配置成功
$ssh master
若当前机器登录成功,接下来的要做的就是将公钥复制到所有的slave机器上。
a.拷贝公钥到服务器(要登录上去的那台服务器slave)
$ ssh-copy-id [email protected]
b.设置完后,就可以使用下面的命令格式进行SSH无密码登录了。
$ ssh slave01
c.退出远程登录 logout
2.2 安装jdk
以root用户登录
1)在/usr下创建java文件夹
$cd /usr
$mkdir java
2)下载jdk,并将下载的jdk上传到/usr/java中(可使用secureCRT的rz命令)
下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
3)解压jdk的tar文件
$tar zxvf jdk-8u131-linux-x64.tar.gz
4)解压后删除gz文件
$rm -rf jdk-8u131-linux-x64.tar.gz
以上步骤后,运行命令java -version若显示版本号,则以下5)、6)步骤可省略。
5)配置jdk环境变量
$vi /etc/profile
添加以下数据
// 将以下数据复制到文件底部
JAVA_HOME=/usr/java/jdk1.8.0_131
JRE_HOME=/usr/java/jdk1.8.0_131/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
exportJAVA_HOME JRE_HOME CLASS_PATH PATH
6)使配置生效
$source /etc/profile
7)验证是否安装成功
$java -version
以上步骤后,jdk即安装完成了,若其他主机不想按步骤安装的话,可以使用scp命令拷贝到其他从节点,拷贝完后,执行步骤5)、6)、7)即可。
$scp -r /usr/java [email protected]:/usr/java
2.3 hadoop安装
2.3.1 Hadoop安装配置
先只在master主机配置,配置完成后拷贝至slave主机。以hadoop用户登录
1)下载
http://mirror.bit.edu.cn/apache/hadoop/common/
2)使用secureCRT,将hadoop的gz文件上传到/home/hadoop/文件夹
$ cd /home/hadoop
$ rz
3)解压并重命名
$tar zxvf hadoop-2.7.3.tar.gz
$mv hadoop-2.7.3 hadoop 重命名
//删除hadoop-2.7.3.tar.gz文件
$rm –rf hadoop-2.7.3.tar.gz
4)在“/home/hadoop/hadoop”下面创建tmp文件夹
$cd /home/hadoop/hadoop
$mkdir tmp
5)切换到root用户,将Hadoop的安装路径添加到“/etc/profile”中
$su root
$vi /etc/profile
export HADOOP_INSTALL=/home/hadoop/hadoop export PATH=${HADOOP_INSTALL}/bin:${HADOOP_INSTALL}/sbin${PATH} export HADOOP_MAPRED_HOME=${HADOOP_INSTALL} export HADOOP_COMMON_HOME=${HADOOP_INSTALL} export HADOOP_HDFS_HOME=${HADOOP_INSTALL} export YARN_HOME=${HADOOP_INSTALLL} export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_INSTALL}/lib/natvie export HADOOP_OPTS="-Djava.library.path=${HADOOP_INSTALL}/lib:${HADOOP_INSTALL}/lib/native" |
// 将以下数据加入到文件末尾
$ source /etc/profile
以下为配置hadoop集群的步骤,切换为hadoop用户。
$ su hadoop
7)设置hadoop-env.sh中的java环境变量
$ cd /home/hadoop/hadoop/etc/hadoop/
$ vi hadoop-env.sh
添加:
exportJAVA_HOME=/usr/java/jdk1.8.0_131
8)配置core-site.xml文件
$ vi core-site.xml
<configuration> <property> <name>hadoop.tmp.dir</name> <value>/home/hadoop/hadoop/tmp</value> <description>A base for other temporary directories.</description> </property> <property> <name>fs.default.name</name> <value>hdfs://master:9000</value> </property> </configuration>
|
修改文件内容如下:
9)配置hdfs-site.xml
$ vi hdfs-site.xml
<configuration> <property> <name>dfs.namenode.name.dir</name> <value>file:///home/hadoop/hadoop/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:///home/hadoop/hadoop/dfs/data</value> </property> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.nameservices</name> <value>hadoop-cluster1</value> </property> <property> <name>dfs.namenode.secondary.http-address</name> <value>master:50090</value> </property> <property> <name>dfs.webhdfs.enabled</name> <value>true</value> </property> </configuration> |
修改文件内容如下:
10)配置mapred-site.xml
$ cp mapred-site.xml.templatemapred-site.xml //拷贝模板到mapred-site.xml
$ vi mapred-site.xml
修改文件内容如下:
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> <final>true</final> </property> <property> <name>mapreduce.jobtracker.http.address</name> <value>master:50030</value> </property> <property> <name>mapreduce.jobhistory.address</name> <value>master:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>master:19888</value> </property> <property> <name>mapred.job.tracker</name> <value>http://master:9001</value> </property> </configuration> |
<!--下面的master改为集群master节点的主机名-->
11)配置yarn-site.xml
$ vi yarn-site.xml
修改文件内容如下:
下面的master改为集群master节点的主机名
<configuration> <property> <name>yarn.resourcemanager.hostname</name> <value>master</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.resourcemanager.address</name> <value>master:8032</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>master:8030</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>master:8031</value> </property> <property> <name>yarn.resourcemanager.admin.address</name> <value>master:8033</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>master:8088</value> </property> </configuration> |
这样master节点上的hadoop就配置完成了,接下来可以将配置好的hadoop拷贝到从节点中,执行12)。
12)将master节点中配置好的hadoop传入slave从节点中
$ scp -r /home/hadoop/hadoop [email protected]:/home/hadoop
13)修改master主机上的slaves文件,配置所有从节点的主机名
$ cd /home/hadoop/hadoop/etc/hadoop
$ vi slaves
slave01 |
13)格式化HDFS文件系统
在master主机上输入以下命令
$ hadoop namenode -format
2.3.2 hadoop启动
以hadoop用户登录
1))关闭机器防火墙
centos7默认防火墙用的firewalld。
$ systemctl stop firewalld.service 关闭防火墙
$ systemctl disable firewalld.service 关闭开机启动
2)启动
$ cd /home/hadoop/hadoop/sbin
$ ./start-all.sh
// 更推荐的运行方式:
$ cd /home/hadoop/hadoop/sbin
$ ./start-dfs.sh
$ ./start-yarn.sh
启动后输出以下信息:
Starting namenodes on [master] master: starting namenode, logging to /usr/hadoop/logs/hadoop-root-namenode-localhost.localdomain.out slave01: starting datanode, logging to /usr/hadoop/logs/hadoop-root-datanode-slave01.out
starting yarn daemons starting resourcemanager, logging to /usr/hadoop/logs/yarn-root-resourcemanager-localhost.localdomain.out slave01: starting nodemanager, logging to /usr/hadoop/logs/yarn-root-nodemanager-slave01.out |
方式一:
直接在master或slave输入命令jps查看运行进程
$ jps
master: 3930 ResourceManager 4506 Jps 3693 NameNode |
输出如下信息(端口号仅供参考)
slave01: 2792 NodeManager 2920 Jps 2701 DataNode |
方式二:
执行如下命令:
$ hadoop dfsadmin -report
输出如下信息
方式三:
访问网页
$ systemctl stop firewalld.service //关闭防火墙
输入以下网址,进入hadoop管理首页
http://172.18.68.119:50070/dfshealth.html#tab-overview