Hadoop的安装与配置和集群的搭建,Hadoop的定义与作用
Hadoop的定义与作用
hadoop是什么?Hadoop是一种分析和处理大数据的软件平台,是Appach的一个用Java语言所实现的开源软件的框架,在大量计算机组成的集群当中实现了对于海量的数据进行的分布式计算。
Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。
HDFS(Hadoop Distributed File System):Hadoop的分布式文件系统。
MapReduce:Hadoop为每一个input split创建一个task调用Map计算,在此task中依次处理此split中的一个个记录(record),map会将结果以key–value 的形式输出,hadoop负责按key值将map的输出整理后作为Reduce的输入,Reduce Task的输出为整个job的输出,保存在HDFS上.
Hadoop的集群主要由 NameNode,DataNode,Secondary NameNode,JobTracker,TaskTracker组成:
NameNode中记录了文件是如何被拆分成block以及这些block都存储到了那些DateNode节点。NameNode同时保存了文件系统运行的状态信息.。DataNode中存储的是被拆分的blocks。Secondary NameNode帮助NameNode收集文件系统运行的状态信息。JobTracker当有任务提交到Hadoop集群的时候负责Job的运行,负责调度多个TaskTracker。TaskTracker负责某一个map或者reduce任务.
Hadoop的安装与配置
Hadoop的安装
这里选的是2.6的版本:hadoop-2.6.0-cdh5.14.2.tar.gz
,可自行百度搜索
虚拟机安装的LINUX的64为系统,
jdk,安装的是jdk-8u221-linux-x64.tar.gz
,
上面的配置如果没有处理号,可以在下方链接先去配置linux系统和jdk
Linux环境安装及jdk安装
解压安装
[root@localhost software]# tar -zxf hadoop-2.6.0-cdh5.14.2.tar.gz -C /opt
重命名
[root@localhost opt]# mv hadoop-2.6.0-cdh5.14.2/ hadoop
Hadoop的配置
1,免密登录
生成密钥(在家目录下操作)
[root@localhost ~]# ssh-keygen -t rsa -P ""
复制密钥到公钥
[root@localhost ~]# cat /root/.ssh/id_rsa.pub > /root/.ssh/authorized_keys
开启远程免密登录(@自己的主机地址)
[root@localhost ~]# ssh-copy-id -i .ssh/id_rsa.pub -p22 root@192.168.211.101
2,修改主机名和主机列表
[root@localhost ~]# vi /etc/hostname
[root@localhost ~]# vi /etc/hosts
让主机名修改即时生效
hostnamectl set-hostname hadoop101
3,配置hadoop-evn.sh运行环境
[root@localhost hadoop]# cd /opt/hadoop/etc/hadoop
[root@localhost hadoop]# vi hadoop-env.sh
到25行,修改java_home路径
4,配置core-site.xml
[root@localhost hadoop]# vi core-site.xml
在configration中加入以下内容
<!-- Put site-specific property overrides in this file. -->
<configuration>
<!-- 默认节点(写自己主机的ip)端口,端口默认为9000 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://192.168.211.101:9000</value>
</property>
<!-- hdfs的临时文件的目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop/tmp</value>
</property>
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
</configuration>
5,配置hdfs-site.xml
[root@localhost hadoop]# vi hdfs-site.xml
<!-- Put site-specific property overrides in this file. -->
后面一个要输入自己的主机名
<configuration>
<!-- 数字和集群机器数量相等 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<!-- namenode备用节点 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop101:50090</value>
</property>
</configuration>
6,配置mapred-site文件
把之前的原文件改名,再进行配置
[root@localhost hadoop]# mv mapred-site.xml.template mapred-site.xml
[root@localhost hadoop]# vi mapred-site.xml
注意修改主机ip
<!-- Put site-specific property overrides in this file. -->
<configuration>
<!-- mapreduce的工作模式:yarn -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- mapreduce的工作地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>192.168.211.101:10020</value>
</property>
<!-- web页面访问历史服务端口的配置 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>192.168.211.101:19888</value>
</property>
</configuration>
7,配置yarn-site.xml
[root@localhost hadoop]# vi yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<!-- reducer获取数据方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<!-- 指定YARN的ResourceManager的地址,值为主机名 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop101</value>
</property>
<!-- 日志聚集功能使用 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 日志保留时间设置7天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
</configuration>
8,配置slaves
[root@localhost hadoop]# vi slaves
改成自己的主机名
9,配置hadoop环境变量
[root@localhost hadoop]# vi /etc/profile
配置path
export HADOOP_HOME=/opt/hadoop //这个看个人的安装路径
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
使即时生效
[root@localhost hadoop]# source /etc/profile
10,格式化hdfs
[root@localhost hadoop]# hadoop namenode -format
测试
启动
[root@localhost hadoop]# start-all.sh
[root@localhost hadoop]# mr-jobhistory-daemon.sh start historyserver
输入jps查看启动的进程
如果启动的进程和上图一样就是成功了,如果datanode启动失败,可以点下面链接去修复
datanode没启动怎么办
访问hadoop
http://192.168.211.101:50070 HDFS页面
http://192.168.211.101:8088/cluster YARN页面
关闭程序
[root@localhost hadoop]# stop-all.sh
Hadoop集群的搭建
1,复制虚拟机,复制三个
2,启动复制的虚拟机,修改ip
vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
修改最后一行的地址
重启网络 systemctl restart network
修改主机名vi /etc/hostname
即时生效 hostnamectl set-hostname 主机名
修改主机列表 vi /etc/hosts
虚拟机关机重启
3,打开moba,配置集群间的免密登录
之前hadoop配置过免密登录,现在先删除文件,避免干扰
[root@hadoop101 ~]# cd /root/.ssh //
[root@hadoop101 .ssh]# rm -rf id_rsa //删除复制的密钥文件
[root@hadoop101 .ssh]# cd //返回家目录
生成密钥,配置免密
[root@hadoop103 ~]# ssh-keygen -t rsa -P "" //生成密钥
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): //直接回车
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:fESmoNynZUoIgRW3o3zZIrJzGzcJ/rSxGKtnZmtiAh0 root@hadoop103
The key's randomart image is:
+---[RSA 2048]----+
| o=o. . o |
|. + = . + |
| * o = . |
| .E. = B . |
|..=.+ + S . |
|.+.+ o . |
|+ = * |
|o+*X = |
|+O=.+ |
+----[SHA256]-----+
[root@hadoop103 ~]# cat /root/.ssh/id_rsa.pub > /root/.ssh/authorized_keys //复制密钥到公钥
[root@hadoop103 ~]# ssh-copy-id -i .ssh/id_rsa.pub -p22 root@192.168.56.102 //配置免密
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: ".ssh/id_rsa.pub"
The authenticity of host '192.168.56.102 (192.168.56.102)' can't be established.
ECDSA key fingerprint is SHA256:NH5XK2jKpfN0ohN55IqzW/gyFyguXEB+hqb1QBOPyn8.
ECDSA key fingerprint is MD5:4e:ea:2a:ae:d4:5b:19:62:39:7e:10:5a:b0:95:2e:9e.
Are you sure you want to continue connecting (yes/no)? yes //输入YES
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.56.102's password: //输入密码
Number of key(s) added: 1
Now try logging into the machine, with: "ssh -p '22' '[email protected]'"
and check to make sure that only the key(s) you wanted were added.
[root@hadoop103 ~]#
4,修改主机的配置文件
在hadoop目录下将所有的tmp文件删除。
配置hdfs-site.xml
[root@hadoop101 ~]# cd /opt/hadoop/etc/hadoop
[root@hadoop101 hadoop]# vi hdfs-site.xml
将dfs.replication
改为集群的机器数量,将dfs.namenode.secondary.http-address
改为某个机器,将其设置成为SNN
修改slaves文件,将所有集群的机器名添加进去
[root@hadoop101 hadoop]# vi slaves
5,修改副本机器的配置文件
前两步和修改主机配置一样
[root@hadoop102 ~]# cd /opt/hadoop/etc/hadoop
[root@hadoop102 hadoop]# vi hdfs-site.xml
[root@hadoop102 hadoop]# vi slaves
或直接把文件传输过去
100 scp hdfs-site.xml root@hadoop112:/opt/hadoop/etc/hadoop/hdfs-site.xml
101 scp hdfs-site.xml root@hadoop113:/opt/hadoop/etc/hadoop/hdfs-site.xml
102 scp slaves root@hadoop113:/opt/hadoop/etc/hadoop/slaves
103 scp slaves root@hadoop112:/opt/hadoop/etc/hadoop/slaves
配置mapred-site.xml文件,将地址改为当前机器的ip地址
[root@hadoop102 hadoop]# vi mapred-site.xml
6,在主机器下格式化hadfs
[root@hadoop101 hadoop]# hadoop namenode -format
7,启动hadoop
[root@hadoop101 hadoop]# start-all.sh
[root@hadoop101 hadoop]# mr-jobhistory-daemon.sh start historyserver
8,查看运行结果
在主机输入 jps
(查看进程)
结果应为
在副节点输入jps,结果应为
如果datanode开启不了,可以点击下方链接处理
datanode的处理方法
https://blog.csdn.net/yanglitian_123/article/details/106940188
打开网页验证:http://主机地址:50070
HDFS页面
http://主机地址:8088
YARN的管理界面