赞
踩
话不多说,安装完全分布式的血泪史太长了,这次直接给自己把安装过程全部弄正确记录下来。所谓完美的安装过程。
创建新的虚拟机
ping
Ctrl+z 退出联网测试
1.安装epel-release
yum install -y epel-release
2.安装net-tools工具:包含ifconfig工具
yum install -y net-tools
3.安装ntp
yum install -y ntp
1.生成密钥
2.进入/root/.ssh,将公钥O导入
systemctl stop firewalld 关闭防火墙
systemctl disable firewalld.service 关闭防火墙开机自启动
1.创建atguigu用户
useradd atguigu
2.更改密码
passwd atguigu
3.添加atguigu sudo具有root权限
vim /etc/sudoers
在%wheel ALL=(ALL) ALL下一行添加:
atguigu ALL=(ALL) NOPASSWD:ALL
:wq!强制保存
1.切换到atguigu用户
su - atguigu
2.创建文件夹
sudo mkdir /opt/module //安装路径
sudo mkdir /opt/software //存放安装包
3.修改module、software文件夹的所有者和所属组均为atguigu用户
chown atguigu:atguigu /opt/module
chown atguigu:atguigu /opt/software
4.查看module、software文件夹的所有者和所属组
cd /opt/
ll
1.修改主机名称
vim /etc/hostname
- 1
- 配置Linux克隆机主机名称映射hosts文件,打开/etc/hosts
vim /etc/hosts 添加 192.168.10.100 hadoop100
- 1
- 2
- 3
- 4
3.修改windows的主机映射文件(hosts文件)
C:\Windows\System32\drivers\etc中 打开hosts文件并添加如下内容,然后保存 192.168.10.100 hadoop100
- 1
- 2
- 3
- 4
1.vim /etc/sysconfig/network-scripts/ifcfg-ens33
2.添加TYPE="Ethernet" PROXY_METHOD="none" BROWSER_ONLY="no" BOOTPROTO="static" DEFROUTE="yes" IPV4_FAILURE_FATAL="no" IPV6INIT="yes" IPV6_AUTOCONF="yes" IPV6_DEFROUTE="yes" IPV6_FAILURE_FATAL="no" IPV6_ADDR_GEN_MODE="stable-privacy" NAME="ens33" IPADDR=192.168.10.100 PREFIX=24 GATEWAY=192.168.10.2 DNS1=192.168.10.2
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
3.查看Linux虚拟机的虚拟网络编辑器,编辑->虚拟网络编辑器->VMnet8
- 查看Windows系统适配器VMware Network Adapter VMnet8的IP地址
4.保证Linux系统ifcfg-ens33文件中IP地址、虚拟网络编辑器地址和Windows系统VM8网络IP地址相同。
5.重启
reboot
- 1
1.解压jdk到/opt/module
tar -zxvf xxxxxxx -C /opt/module/
- 1
2.配置JDK环境变量
(1)新建/etc/profile.d/my_env.sh文件 sudo vim /etc/profile.d/my_env.sh (2)添加 #JAVA_HOME export JAVA_HOME=/opt/module/jdk1.8.0_212 export PATH=$PATH:$JAVA_HOME/bin (3)让新的环境变量PATH生效 source /etc/profile
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
1.解压安装文件到/opt/module下面
tar -zxvf hadoop-2.7.3.tar.gz -C /opt/module/
- 1
- 2
2.配置hadoop环境变量
3.使环境变量生效
建立hadoop工作目录/var/hadoop
<configuration> <tconfime>fs.defaultFS</name> <value>hdfs://hadoop100:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/opt/hadoopTmp/</value> </property> </configuration>
vi etc/hadoop/hdfs-site.xml
格式化hdfs命令:
hdfs namenode -format
成功
yarn配置
vi etc/hadoop/yarn-site.xml
<configuration>
<property>
<name>yarn.resourcemanager.hostsname</name>
<value>BigData01</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
配置mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
启动
hbase单机
<property> <name>hbase.zookeeper.quorum</name> <value>localhost</value> </property> <property> <name>hbase.zookeeper.property.clientPort</name> <value>2181</value> </property> <property> <name>hbase.unsafe.stream.capability.enforce</name> #使用我们电脑的文件系统,作为数据存储。 <value>false</value> </property> <property> <name>hbase.master.ipc.address</name> <value>0.0.0.0</value> </property> <property> <name>hbase.regionserver.ipc.address</name> <value>0.0.0.0</value> </property> </configuration>
克隆出 3台虚拟机 Hadoop102 hadoop103 hadoop104
打开虚拟机,ifconfig命令查看ip,方面在连接工具上连接虚拟机。
Root用户,更改各个虚拟机主机名(如hadoop102)
Root用户,配置各个虚拟机静态IP(如hadoop102)
使用这个配置信息,更改IP
TYPE="Ethernet" PROXY_METHOD="none" BROWSER_ONLY="no" BOOTPROTO="static" DEFROUTE="yes" IPV4_FAILURE_FATAL="no" IPV6INIT="yes" IPV6_AUTOCONF="yes" IPV6_DEFROUTE="yes" IPV6_FAILURE_FATAL="no" IPV6_ADDR_GEN_MODE="stable-privacy" NAME="ens33" IPADDR=192.168.10.102 PREFIX=24 GATEWAY=192.168.10.2 DNS1=192.168.10.2
此时已经修改成自己想要的ip
重启:reboot
进入C:\Windows\System32\drivers\etc路径找到hosts
1.修改windows的主机映射文件(hosts文件)
2.修改windows的主机映射文件(hosts文件)
要求:关闭防火墙,已配置静态IP,主机名称完善
看第三章
1.使用三种命令在主机之间传输文件
(1)scp
(2)rsync
(3)xsync
2.scp:可以实现服务器与服务器之间的数据拷贝,拷贝,拷贝!!
(1)语法:
scp -r $pdir/fname $user@hosr:$pdir/fname
命令 递归 文件路径/文件名称 目的地用户@主机:目的地路径/名称
(2)使用前提:虚拟机器中有相同文件夹或者文件,并且权限归自定义用户所有
案例:在hadoop102上 把/opt/module/hadoop-2.7.3目录拷贝到hadoop103,hadoop104
出现连接错误,需要将对应的IP加到/etc/hosts中。
解决问题后成功:
1.rsync:主要用于备份和镜像,速度快,可以变复制相同内容和支持符号链接的优点
2.rsync和scp区别:用rsync做文件的复制比scp复制所用时间短,rsync只对差异文件做复制,scp是复制所有文件。
3.基本语法:
rsync -av $pdir/$fname $user@host:$pdir/fname
命令 选项参数 文件路径/文件名 目的地用户@主机:目的地路径/名称
4.参数说明:
(1)-a 归档拷贝
(2)-v 显示复制过程
案例:
(1)删除hadoop103中的/opt/module/hadoop-2.7.3/bin文件(只是实验,平时不能随便删除bin目录)
补充知识点:删除安装的tar包
rm -r 安装包路径/安装包名称
(2)同步hadoop102中的/opt/module/hadoop-2.7.3/bin文件到hadoop103
1.需求:循环复制文件到所有节点的相同目录下
2.rsync原始命令拷贝
rsync -av /opt/module atguigu@hadoop103:/opt/
1.期望脚本在任何路径都能使用(脚本放在声明了全局环境变量的路径)
2.在根目录创建bin文件夹
3.在/home/atguigu/bin 目录下创建xsync脚本
sudo vim xsync
- 1
!!!!!!注意粘贴一定要先按i,不然脚本可能没用!!!!!! #!/bin/bash #1. 判断参数个数 if [ $# -lt 1 ] then echo Not Enough Arguement! exit; fi #2. 遍历集群所有机器 for host in hadoop102 hadoop103 hadoop104 do echo ==================== $host ==================== #3. 遍历所有目录,挨个发送 for file in $@ do #4. 判断文件是否存在 if [ -e $file ] then #5. 获取父目录 pdir=$(cd -P $(dirname $file); pwd) #6. 获取当前文件的名称 fname=$(basename $file) ssh $host "mkdir -p $pdir" rsync -av $pdir/$fname $host:$pdir else echo $file does not exists! fi done done
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
4.给脚本赋予权限
chmod 777 xsync
- 1
文件赋予权限之后变成绿色,可以使用脚本了
5.同步当前bin目录到hadoop103
6.当sudo xsync绝对路径 赋值文件,就可以赋值给root用户
主机之间互相登录不需要输入密码就可以登录
1.进入家目录 /home/atguigu
2.ls -all 查看所有隐藏文件
3.进入 .ssh文件,发现一个known_hosts文件
known_hosts文件中有访问数据,说明有主机访问过
4.现在配置hadoop102无密登录hadoop103ssh-keygen -t rsa (3次回车搞定)
- 1
此时在查看ssh中九多了一个公钥,一个私钥
私钥:
公钥:
5.拷贝hadoop102的公钥到hadoop03,hadoop104(第一次需要输入密码)
6.测试,成功登录
7.配置hadoop102无密登录hadoop104
此时再使用xsync不用再输入密码
原则:
(1)NameNode和SecondaryNode不要放在同一台机器上,因为都很耗费内存
(2)
hadoop配置文件有两类:
默认配置文件:
自定义配置文件:只有用户想修改某一默认配置值时,才需要修改自定义配置文件,更改相应属性值
(1)默认配置文件:
要获取的默认文件 | 文件存放在Hadoop的jar包中的位置 |
---|---|
[core-default.xml] | hadoop-common-3.1.3.jar/core-default.xml |
[hdfs-default.xml] | hadoop-hdfs-3.1.3.jar/hdfs-default.xml |
[yarn-default.xml] | hadoop-yarn-common-3.1.3.jar/yarn-default.xml |
[mapred-default.xml] | hadoop-mapreduce-client-core-3.1.3.jar/mapred-default.xml |
(2)自定义配置文件
core-site.xml
hdfs-site.xml
yarn-site.xml
mapred-site.xml
四个配置文件存放在$HADOOP_HOME/etc/hadoop这个路径上,用户可以根据项目需求重新进行修改配置。
1.core-site.xml
<configuration> <!-- 指定NameNode的地址 --> <property> <name>fs.defaultFS</name> <value>hdfs://hadoop102:8020</value> </property> <!-- 指定hadoop数据的存储目录 --> <property> <name>hadoop.tmp.dir</name> <value>/opt/module/hadoop-2.7.3/data</value> </property> <!-- 配置HDFS网页登录使用的静态用户为atguigu --> <property> <name>hadoop.http.staticuser.user</name> <value>atguigu</value> </property> </configuration>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
2.hdfs-site.xml
<configuration> <!-- nn web端访问地址--> <property> <name>dfs.namenode.http-address</name> <value>hadoop102:9870</value> </property> <!-- 2nn web端访问地址--> <property> <name>dfs.namenode.secondary.http-address</name> <value>hadoop104:9868</value> </property> </configuration>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
3.yarn-site.xml
<configuration> <!-- 指定MR走shuffle --> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <!-- 指定ResourceManager的地址--> <property> <name>yarn.resourcemanager.hostname</name> <value>hadoop103</value> </property> <!-- 环境变量的继承 --> <property> <name>yarn.nodemanager.env-whitelist</name> <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value> </property> </configuration>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
4.mapred-site.xml
<configuration> <!--指定MapReduce程序运行在Yarn上--> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
1.把/opt/module/hadoop-2.7.3/etc/hadoop文件分发给hadoop103,hadoop104
成功:可以在hadoop103看到
1.配置slaves,默认是localhost
2.添加工作的节点(不允许有空格)
3.分发slaves
注意:首次启动,需要在hadoop102格式化NameNode
---------------------------------------------------------
(注意:格式化NameNode,会产生新的集群id,导致NameNode和DataNode的集群id不一致,集群找不到已往数据。如果集群在运行过程中报错,需要重新格式化NameNode的话,一定要先停止namenode和datanode进程,并且要删除所有机器的data和logs目录,然后再进行格式化。)
---------------------------------------------------
1.在hadoop102格式化NameNode
2.出现成功
3.ls -all 查看所有文件,包括隐藏文件 新出现data,logs
解决办法(非必要):
1.进入/opt/module/hadoop-2.7.3/sbin,里面有启动命令
2.输入hadoop102输入命令启动namenode
3.hadoop103输入命令启动resourcemanger
start-yarn.sh
- 1
4.jps查看各个主机进程
(1) Web端查看HDFS的NameNode 浏览器中输入:
http://hadoop102:9870 查看HDFS上存储的数据信息
(2)Web端查看YARN的ResourceManager 浏览器中输入:
http://hadoop103:8088 查看YARN上运行的Job信息
为了查看程序的历史运行情况,需要配置一下历史服务器。
1.配置mapred-site.xml
2.分发配置
3.在hadoop102 启动历史服务器
mr-jobhistory-daemon.sh start historyserver
- 1
4.查看进程jps,是否启动成功
5.查看JobHistory
1.配置yarn-site.xml
<!-- 开启日志聚集功能 --> <property> <name>yarn.log-aggregation-enable</name> <value>true</value> </property> <!-- 设置日志聚集服务器地址 --> <property> <name>yarn.log.server.url</name> <value>http://hadoop102:19888/jobhistory/logs</value> </property> <!-- 设置日志保留时间为7天 --> <property> <name>yarn.log-aggregation.retain-seconds</name> <value>604800</value> </property>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
2.分发配置
3.关闭NodeManager 、ResourceManager和HistoryServer
4.启动NodeManager 、ResourceManager和HistoryServer
5.查看日志:当有过作业就会有日志文件(这里还没有作业)历史服务器地址 http://hadoop102:19888/jobhistory
- 1
- 2
各个模块分开启动/停止(配置ssh是前提)常用 1.整体启动/停止HDFS start-dfs.sh/stop-dfs.sh 2.整体启动/停止YARN start-yarn.sh/stop-yarn.sh 3.整体启动/停止historyserver mr-jobhistory-daemon.sh start/stop historyserver 各个服务组件逐一启动/停止 1.分别启动/停止HDFS组件 hdfs --daemon start/stop namenode/datanode/secondarynamenode 2.启动/停止YARN yarn --daemon start/stop resourcemanager/nodemanager
1.进入atguigu/bin,创建myhadoop.sh脚本
cd /home/atguigu/bin
vim myhadoop.sh
2.加入如下内容 #!/bin/bash if [ $# -lt 1 ] then echo "No Args Input..." exit ; fi case $1 in "start") echo " =================== 启动 hadoop集群 ===================" echo " --------------- 启动 hdfs ---------------" ssh hadoop102 "/opt/module/hadoop-2.7.3/sbin/start-dfs.sh" echo " --------------- 启动 yarn ---------------" ssh hadoop103 "/opt/module/hadoop-2.7.3/sbin/start-yarn.sh" echo " --------------- 启动 historyserver ---------------" ssh hadoop102 "/opt/module/hadoop-2.7.3/bin/mapred --daemon start historyserver" ;; "stop") echo " =================== 关闭 hadoop集群 ===================" echo " --------------- 关闭 historyserver ---------------" ssh hadoop102 "/opt/module/hadoop-2.7.3/bin/mapred --daemon stop historyserver" echo " --------------- 关闭 yarn ---------------" ssh hadoop103 "/opt/module/hadoop-2.7.3/sbin/stop-yarn.sh" echo " --------------- 关闭 hdfs ---------------" ssh hadoop102 "/opt/module/hadoop-2.7.3/sbin/stop-dfs.sh" ;; *) echo "Input Args Error..." ;; esac
3.赋予脚本权限
chmod +x myhadoop.sh
1.进入·/home/atguigu/bin,创建jpsall文件
cd /home/atguigu/bin
vim jpsall
2. 输入
#!/bin/bash
for host in hadoop102 hadoop103 hadoop104
do
echo =============== $host ===============
ssh $host jps
done
3.赋予脚本权限
chmod +x jpsall
4分发/home/atguigu/bin目录
xsync /home/atguigu/bin/
测试成功
1.安装ntp插件
yum install ntp
2.进入/etc 看到出现文件夹ntp,ntp.conf文件
3.开始ntpd服务
syatemctl start ntpd
4.编辑 修改ntp.conf文件
vim /etc/ntp.conf
5.编辑ntpd
vim /etc/sysconfig/ntpd
6.开始时间服务
systemctl start ntpd
systemctl enable ntpd
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。