Hadoop知识点
配置集群前的规划(提前写在记事本上)
-
确定三台的ip
-
找到三台虚拟机的MAC地址
-
给三台虚拟机起什么名字
-
最好在根目录下(/)建一个目录export,里面建立两个目录(servers存放解压后的软件,software存放从windows传来的压缩包)
网络配置
配置各个服务器的网络,相互之间能ping通,而且外网也可以ping通
-
主机名的修改,默认都是localhost,把HOSTNAME改一下,三台可以分别改为hadoop01、hadoop02、hadoop03,注意:三台都要改(改后重启才会生效)
vim /etc/sysconfig/network
-
配置IP映射(三台都要配置,ip在虚拟机DHCP设置里找)
vi /etc/hosts
-
修改虚拟网卡配置文件,配置网卡设备的MAC地址(删除多余的网卡 name改为eth0 MAC地址要对应)(三台机子都要改)
vi /etc/udev/rules.d/70-persistent-net.rules
-
修改IP地址文件,设置静态IP(三台机子都要改)
vim /etc/sysconfig/network-scripts/ifcfg-eth0
-
几个名词的解释:
ONBOOT=yes 表示启动这块网卡
BOOTPROTO=static 表示静态路由协议,可以保持IP固定
HWADDR 表示虚拟机MAC地址,需要与当前虚拟机MAC地址一致
IPADDR 表示虚拟机的IP地址,这里设置的IP地址要与前面IP映射配置时的IP地址一致,否则无法通过主机名找到对应IP
GATEWAY 表示虚拟机网关,通常都是255.255.255.0
NETMASK 表示虚拟机子网掩码,通常都是255.255.255.0
DNS1 表示域名解析器,此处采用谷歌提供的免费DNS服务器8.8.8.8(也可设置为PC端电脑对应的DNS)
-
最后重启
-
然后自己可以试一下机子与机子之间能不能ping通,外网能不能ping通,如果都可以的话,那表示你就成功了
一.免密配置
生成秘钥
ssh-keygen -t rsa
分享秘钥给三个虚拟机,自己也要分享,注意三台虚拟机要分别和其他还有自身分享秘钥,秘钥都要生成
ssh-copy-id hadoop01
ssh-copy-id hadoop02
ssh-copy-id hadoop03
二.jdk和hadoop的安装以及环境变量的配置
针对SecureCRTPortable,xshell这款软件可安装rz来进行windows和虚拟机之间文件的传输,当然xftp也可以
//安装传输软件指令
yum install lrzsz -y
//安装完成后可使用rz指令弹出传输页面
rz
传输java的jdk后
解压缩到servers
tar -zxvf jdk-8u161-linux-x64.tar.gz -C /export/servers/
把名字改为jdk
mv jdk1.8.0_161/ jdk
配置环境变量
第一步
//用vi编辑器进入etc/profile
vi /etc/profile
第二步
第三步
//生效环境配置
source /etc/profile
第四步验证
传输hadoop后
解压缩到servers
tar -zxvf hadoop-2.7.4.tar.gz -C /export/servers/
三.配置hadoop环境变量
第一步
//用vi编辑器进入etc/profile
vi /etc/profile
第二步 在最下面添加如下图,后面hadoop-2.7.4是我的hadoop版本,你要根据你自己的hadoop名字添加哦!!
第三步
//生效环境配置
source /etc/profile
第四步验证
修改配置文件
四.6个文件 : 2个小的 4个大的(/export/servers/hadoop-2.7.4/etc/hadoop)
注:这六个文件都在解压安装后hadoop下
1.两个小的:
-
设置hadoop运行环境(修改hadoop-env.sh,如下图)
地址:/export/servers/hadoop-2.7.4/etc/hadoop(但这是我的,要根据你的实际情况)
-
配置slaves
vi /export/servers/hadoop-2.7.4/etc/hadoop/slaves
注意: 这相当于是一份对于DN的白名单,只有在白名单里面的主机才能被NN识别。
配置了这个之后,就能排除阿猫阿狗的DN了。
其实slaves文件里不一定要写主机名,最终的都是通过IP来判断,完全可以写一个IP就行。 hadoop3.0以后slaves更名为workers了
2.四个大的
-
core-site.xml
改文件是Hadoop的核心配置文件,其目的是配置HDFS地址、端口号,以及临时文件目录。
<configuration> <!--用于设置Hadoop的文件系统,有URL指定--> <property> <name>fs.defaultFS</name> <!--用于指定namenode地址在hadoop01机器上--> <value>hdfs://hadoop01:9000</value> </property> <!--配置Hadoop的临时目录,默认/tmp/hadoop-${user.name}--> <property> <name>hadoop.tmp.dir</name> <value>/export/servers/hadoop-2.7.4/tmp</value> </property> </configuration>
-
hdfs-site.xml
<configuration> <!--指定HDFS副本的数量--> <property> <name>dfs.replication</name> <value>3</value> </property> <!--secondary namenode所在主机的IP和端口--> <property> <name>dfs.namenode.secondary.http-address</name> <value>hadoop02:50090</value> </property> </configuration>
-
mapred-site.xml
<configuration> <!--指定MapReduce运行时框架,这里指定在YARN上,默认是local--> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
-
yarn-site.xml
<configuration> <!-- Site specific YARN configuration properties --> <!--指定YARN集群的管理者(ResourceManager)的地址--> <property> <name>yarn.resourcemanager.hostname</name> <value>hadoop01</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <!--定义NodeManager上要提供正在运行的容器的全部可用资源大小--> <name>yarn.nodemanager.resource.memory-mb</name> <value>2048</value> </property> <property> <!--资源管理器中分配给每个容器请求的最小内存限制--> <name>yarn.scheduler.minimum-allocation-mb</name> <value>2048</value> </property> <property> <!--NodeManager可以分配的CPU核数--> <name>yarn.nodemanager.resource.cpu-vcores</name> <value>1</value> </property> </configuration>
**注意:**在后面Hadoop集群的配置和启动时,可能会出现如NodeManager进程无法启动或者启动后自动结束的情况,此时可以查看Hadoop解压包目录中logs下的日志文件,主要原因是因为系统内存和资源分配不足。(添加在yarn-site.xml的13~30行)
五.启动和测试hadoop
1. hdfs namenode-format
2. start-dfs.sh
3. start-yarn.sh
//查看进程
jps
//问题:格式化失败时,需要删除三台机子的临时文件
1.先关闭hadoop stop-dfs.sh stop-yarn.sh
2.进入到/export/servers/hadoop-2.7.4/tmp
3.执行rm -rf *
六.每台机子的进程
hadoop01 | hadoop02 | hadoop03 |
---|---|---|
NodeManager | Jps | DataNode |
DataNode | DataNode | NodeManager |
ResourceManager | SecondaryNameNode | Jps |
Jps | NodeManager | |
NameNode |