Hadoop完全分布式搭建部署
先创建三台虚拟机
分别改主机名
第一台 master
第二台 slave1
第三台 slave2
三台机子要时间同步
如何查看当前主机名
hostname centos6/7 想同
如何临时修改主机名
hostname 主机名 centos6/7 相同
如何永久修改主机名
vim /etc/hostname centos7重启生效
如何临时+永久修改主机名
hostname set-hostname 主机名 centos7
分别给三台机器 完成映射
vi /etc/hosts
分别给三台机器 关闭防火墙
如何查看当前防火墙是否运行
systemctl status firewall
中间的常用命令
start 开启
stop 停止
restart 重启
reload 加载
status 状态
systemctl status firewalld # 查看防火墙运行状态
如何临时关闭防火墙
systemctl stop firewalld
分别给三台机器 关闭selinux
如何查看当前selinux是否开启
getenforce
如何临时关闭selinux
setenforce 0
永久关闭selinux 需要重启
/etc/selinux/conf
enforcing # 开启状态 运行中
permissive # 关闭状态但是会提示警告信息
disabled # 完全关闭状态
SELINUX=disabled
设置免密登入
一路回车下去 出现下面这个说明成功
+---[RSA 2048]----+
| . =.ooo. |
| . * = oo. |
| + * = oo. |
| o B E + o |
| o . = S. . |
|. .= .+.. |
|o o.+o o |
| o . +=o.. |
| . o+*=. |
+----[SHA256]-----+
[root@master ~]# cd .ssh/
[root@master .ssh]# ls
id_rsa 私钥 id_rsa.pub公钥
出现上面的说明有公钥 私钥
ssh-copy-id localhost (给主机一个钥匙)
ssh-copy-id slave1 (给slave1一个钥匙)
ssh-copy-id slave2 (给slave2一个钥匙)
验证是否免密成功
ssh slave1(验证机器的IP地址)
ssh slave2 (验证机器的IP地址)
因为我配置了host所以直接使用主机名
上传jdk和Hadoop包
使用xshell 或者其他工具将jdk 和Hadoop jar包导入master节点
在cd /usr/local/目录在面使用命令创建Hadoop 和java 两个目录
mkdir Hadoop
mkdir java
解压jar包到Hadoop 和java里
tar -zxvf hadoop-2.6.5.tar.gz
tar -zxvf jdk-7u67-linux-x64.tar.gz
给java 和Hadoop配置环境变量
vim /etc/profile
在配置文件填写如下内容
export JAVA_HOME=/usr/local/java/jdk1.7.0_67 (此处为绝对路径 cd java下的jdk)
export PATH=
P
A
T
H
:
PATH:
PATH:JAVA_HOME/bin
export HADOOP_HOME=/usr/local/hadoop/hadoop-2.6.5 (此处为绝对路径 cd hadoop)
export PATH=
P
A
T
H
:
PATH:
PATH:HADOOP_HOME/bin:$HADOOP_HOME/sbin
生效配置文件
source /etc/profile
分别输入java和hadoop检测配置是否生效
配置Hadoop(配置jdk)
首先local下进入 cd hadoop/hadoop-2.6.5/etc/hadoop/
配置一下内容
vim hadoop-env.sh
把java_home= 后边改成/usr/local/java/jdk1.7.0_67(java里面jdk的路径)
vi core-site.xml
<!-- 这个属性用来指定namedo的HDFS协议的文件系统通信地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<!-- 指定hadoop临时目录 运⾏时产生⽂件的存放⽬目录 -->
/**tmp提前创建好**/
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/usr/local/hadoop/hadoop-2.6.5/tmp</value>
</property>
vi hdfs-site.xml
<!--namenode数据的存放地址 也就是namenode元数据存放的地方>
<property>
<name>dfs.namenode.name.dir</name>
<value>/usr/local/hadoop/hadoop-2.6.5/hdfs/name</value>
</property>
<!--datanode数据的存放地址 也就是block存放的地方>(在Hadoop目录里创建一个hdfs 在hdfs里面创建一个name 一个data)
<property>
<name>dfs.datanode.data.dir</name>
<value>/usr/local/hadoop/hadoop-2.6.5/hdfs/data</value>
</property>
vi mapred-site.xml
cp mapred-site.xml.template mapred-site.xml (cp 这步可操作 也可以不操作)
<!--通知框架MR使用YARN>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
vi yarn-site.xml
<!—资源调度—>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
伪分布式搭建完成 验证结果
Start-hdfs.sh
start-yarn.sh
登入master网址(50700 和 08088)
关闭所有stop-all.sh
vim slaves
配置slave奴隶节点
slave1
slave2
把master节点所有的Hadoop和java包拷贝到slave1 和slave节点
在/usr/local下执行下面命令
scp -r hadoop/hadoop-2.6.5/ slave1:/usr/local/hadoop
scp -r hadoop/hadoop-2.6.5/ slave2:/usr/local/hadoop
scp -r java/jdk1.7.0_67/ slave1:/usr/local/java
scp -r java/jdk1.7.0_67/ slave2:/usr/local/java
拷贝配置文件到slave1 和slave2 节点上
scp /etc/profile slave1:/etc/
scp /etc/profile slave2:/etc
生效配置
source /etc/profile
启动所有服务
start-dfs.sh start-yarn.sh
六、检验⽅方法:
1、最后jps看一下 每个进程
2、主机点的ip加50070 例如:192.168.xxx.xxx:50070 (在⾕谷歌浏览器器打开)
补:
需要格式化namenode
hadoop namenode -format
执行start-dfs.sh
Jps后会出现
DataNode NameNode SecondaryNameNode
补:执行start-yarn.sh
NodeManager ResourceManager
启动所有start-all.sh
关闭所有stop-all.sh
hadoop namenode -format 只能执行一次
所有配置完成后在格式化 启动服务