1 面试部分:
简述hadoop分布式安装步骤
a) 安装Java
b) 创建unix用户账号及网络环境配置
c) 安装hadoop
d) SSH配置
e) 配置hadoop
f) 格式化HDFS文件系统
g) 启动和停止守护进程
2 CenterOS7下hadoop完全分布式集群安装
2.1 以root身份在centerOS安装jdk
在/usr目录下创建java目录
mkdir /usr/java
cd /usr/java
将下载的 jdk-8-linux-x64.tar.gz拷贝到/usr/java目录下并解压缩
tar -zxvf jdk-8-linux-x64.tar.gz
vi /etc/profile
追加内容
JAVA_HOME=/usr/java/jdk1.8.0_144
JRE_HOME=/usr/java/jdk1.8.0_144/jre
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH
运行source命令是环境配置文件修改生效:
source /etc/profile
测试jdk是否安装成功:命令
java -version
2.2 创建Unix账号
A 我们为hadoop创建特定的账号,专门管理hadoop
以root身份,运行创建账号命令:
# useradd hadoop
注意:用户账号名称随意,不一定必须是hadoop,命令成功后,会生成hadoop账号名,及组名hadoop;
接着,修改账号登录密码:
#passwd hadoop
按要求输入两次相同密码即可;
B 修改用户及网络环境
以root身份关闭防火墙,使用hadoop各个节点能够相互通讯
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
C 修改网卡配置,建议配置为静态IP
以root身份配置网卡配置文件
vi /etc/sysconfig/network-scripts/ifcfg-ens33
修改内容如下:
BOOTPROTO="static"
ONBOOT="yes"
IPADDR=192.168.226.129
GATEWAY=192.168.226.2
NETMASK=255.255.255.0
DNS1=192.168.226.2
D 修改机器名称
以root身份修改/etc/hosts文件内容
每一个机器ip 机器名称
192.168.1.100 master
192.168.1.101 slavea
192.168.1.102 slaveb
保存文件
以root身份修改对应机器名称
hostname master
E 修改网络配置
以root身份修改/etc/sysconfig/network
# Created by anaconda
NETWORKING=yes
HOSTNAME=master
使用如下命令使刚才的修改/etc/sysconfig/network生效
source /etc/sysconfig/network
service network restart
注意:修改其他节点机器
F 以root身份修改hadoop账号,添加到sudoers
注意:
创建的hadoop用户需要拥有临时管理员身份
修改/etc/sudoers
添加内容
hadoop ALL=(ALL) NOPASSWD: ALL
重启使之生效
2.3 SSH配置
Hadoop控制脚本(并非守护进程)依赖SSH执行整个集群的操作;
A:以root身份centerOs安装启动ssh服务
SSH 为 Secure Shell 的缩写,SSH 为建立在应用层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。
测试centeros检查是否安装了SSH包
rpm -qa|grep ssh
启动ssh服务
systemctl restart sshd.service
B: 以root身份修改sshd服务
需要编辑/etc/ssh/sshd_config打开sshd服务.
放开标注的文档(去掉#):
#RSAAuthentication yes
#PubkeyAuthentication yes
重启服务,使刚才的修改生效(centos7上命令)
systemctl restart sshd.service
C:注意,以hadoop账号身份登录,并操作 ssh免密
① 为每台机器生成密钥
命令:ssh-keygen - 生成、管理和转换认证密钥
参数
-t type
指定要创建的密钥类型。
可以使用:“rsa1”(SSH-1) “rsa”(SSH-2) “dsa”(SSH-2)-P passphrase
提供(旧)密语
输入命令:
ssh-keygen -t 'RSA'
在/home/用户名/.ssh/目录下生成密钥文件;
② 复制公钥内容到authorized_keys文件;
命令:
cat id_rsa.pub >> authorized_keys
chmod 644 authorized_keys
③ 将Slave1和Slave2中的>authorized_keys内容复制到Master的authorized_keys文件中
④ 将Master中的authorized_keys文件复制Slave1和Slave2中
scp authorized_keys hadoop@Slave2:/hadoop/.ssh/
⑤ 测试使用ssh进行无密码登录
ssh Slave1 ssh登陆远程服务器
exit 并退出远程登陆
注意:
远程拷贝命令
scp 文件名 用户名@远程ip:/路径/
scp命令提供选项:
-p 拷贝文件的时候保留源文件简历的时间;
-q 执行文件拷贝时,不显示任何提示消息;
-r 拷贝整个目录;
-v 拷贝文件时,显示提示信息;
2.4 以hadoop账号身份登录,安装hadoop集群
2.4.1 解压hadoop并配置相关环境变量
以hadoop用户名解压hadoop压缩文件
JAVA_HOME=/usr/java/jdk1.8.0_144
JRE_HOME=/usr/java/jdk1.8.0_144/jre
HADOOP_HOME=/home/hadoop/hadoop-2.9.0
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HADOOP_HOME/etc/hadoop
export JAVA_HOME JRE_HOME CLASS_PATH HADOOP_HOME PATH
使用命令使配置生效:
source /etc/profile
2.4.2 修改hadoop-env.sh添加jdk环境
export JAVA_HOME=/usr/java/jdk1.8.0_144
hadoop有三种运行模式:
独立(本地)模式:
无需运行任何守护进程,所有程序都在同一个JVM上执行,适合开发阶段;
伪分布模式:
hadoop守护进程运行在本地机器上,模拟一个小规模的集群。
全分布式模式:
hadoop守护进程运行在一个集群上。
2.4.3 修改core-site.xml文件
hadoop core的配置项,如hdfs、MapReduce和YARN常用的I/O设置等;
运行hdfs需要将一台机器指定为namenode,属性fs.defaultFS描述hdfs文件系统的uri,默认端口是8020.
2.4.4 修改hdfs-site.xml文件
hdfs-site.xml配置文件:
hadoop守护进程的配置项,包括namenode、辅助namenode和datanode等;
dfs.namenode.name.dir:
namenode存储永久性的元数据的目录列表。namenode在列表上的各个目录中都存放相同的元数据文件;
dfs.datanode.data.dir:
datanode存放数据块的目录列表。各个数据块分别存放于某一个目录中;
dfs.replication:
设置文件备份系数,默认3;
2.4.5 mapred-site.xml文件
mapred-site.xml配置文件:
MapReduce守护进程的配置项,包括作业历史服务器;
名称mapreduce.framework.name:
指的是使用yarn运行mapreduce程序,启动了HDFS之后,就可以启动yarn了。执行命令start-yarn.sh即可启动MapReduce集群
2.4.6 yarn-site.xml文件
Yarn守护进程的配置项,包括资源管理器、web应用代理服务器和节点管理器;
yarn.resourcemanager.hostname属性:
运行资源管理器的机器主机名,默认值:0.0.0.0
yarn.nodemanager.aux-services属性:
节点管理器运行的附加服务列表。NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序;默认情况下,不指定附加服务。
2.4.7 为yarn添加 客户端计算机名称
修改/home/hadoop/hadoop-2.9.0/etc/hadoop/slaves
master
slavea
slaveb
2.5 格式化HDFS文件系统并 启动hdfs文件系统
A: 首次使用hadoop前,必须格式化文件系统,输入如下命令:
hdfs namenode -format
B: 启动和停止守护进程
start-dfs.sh #启动hdfs
start-yarn.sh #启动yarn
C:终止守护进程
stop-yarn.sh
stop-dfs.sh
注意: 启动守护进程
hadoop-daemon.sh start namenode
测试namenode进程情况:
jps
可以使用守护进程:
start-dfs.sh
启动dfs报错,如下:The authenticity of host 'master (192.168.223.110)' can't be established:
解决方法:
好记心不如烂笔头,ssh登录 The authenticity of host 192.168.0.xxx can't be established. 的问题,即可不修改/etc/ssh/ssh_config文件的配置而解决此问题:
ssh -o StrictHostKeyChecking=no 192.168.0.xx
start-yarn.sh
mr-jobhistory-daemon.sh start historyserver
2.6 测试集群是否搭建成功
命令:
hdfs dfsadmin -report
在浏览器中测试hdfs
http://192.168.1.100:50070