*0.前言*
Apache模式搭建非常繁琐,需要配置很多配置文件,仅供学习使用,因为apache的hadoop是开源的,方便学习其内部的实现原理。实际生产中效率低,更推荐CDH等其他方式进行配置,CDH拥有自己的WEB管理页面,更方便对组件进行管理。
CDH搭建文档
*1.集群准备*
虚拟机使用vmware。其实啥都一样,电脑性能跟不上的租阿里云腾讯云都可以,一定要支持CPU虚拟化。
先准备至少三个节点,要根据不同性能安排不同的进程。我这里分配的是hadoop01,4G内存
Hadoop0203都是2G内存,以hadoop01作为主节点。
*1.1安装Cenos7*
首先安装Centos7,最小安装就行,不会有人Centos7安装还要教吧?不会吧?不会吧?
VMware网络配置给个NAT模式,然后再windows下设置->网络与服务->更改适配器->vmnet8
把里面改为静态ip,我这里是192.168.15.1,192.168.15.x/24就是我们的集群子网了。
网关是192.168.15.2,子网掩码255.255.255.0。DNS随便配个8.8.8.8就行。
启动三个虚拟机(其实可以先弄一个再克隆,hadoop要求就是配置文件必须相同)
*1.2修改网卡配置*
最小安装啥命令都没有的,先改IP地址。
(有些版本是ifcfg-eth0)
vi /etc/sysconfig/network-scirpts/ifcfg-ens33
下面的文字注释记得删掉,直接粘贴有可能报错。
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
\# 静态IP
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
\# IPV6是我系统自动生成的,不用管
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=75010dd6-0a7c-4559-8205-133a91603019
DEVICE=ens33
\# 开机自启
ONBOOT=yes
\# 跟windows统一网段,每个虚拟机IP不同其他相同
IPADDR=192.168.15.101
NETMASK=255.255.255.0
GATEWAY=192.168.15.2
DNS1=8.8.8.8
配置完以后重启一下网络服务
systemctl restart network
这样就可以ping通外网了,ping不同检查防火墙
systemctl stop firewalld
systemctl disable firewalld
然后保证windows和节点之间可以ping通即可。
还不行就是特殊问题特殊处理,使用面向CSDN编程思想。
*1.3安装其他常用应用*
安装一个文件传输的应用。
yum install lrzsz -y
输入rz就能传送文件了。
默认的Yum源太慢,建议改成清华的yum源或者阿里的。
ifconfig不能用?
yum install net-tools -y
vi没颜色不好看,弄个vim。
yum install vim -y
节点之间要保证时间同步。
yum install ntp -y
ntpdate ntp6.aliyun.com
//这里也可以主节点ntpdate ntp6.aliyun.com,然后从节点ntpdate hadoop01
节点之间要经常通信,输密码很烦,先生成一对密钥
ssh-keygen
三个回车,不需要内容直接回车就行。
然后把密钥发送给其他节点
ssh-copy-id hadoop02
每个节点都要生成再发送给其他两个节点。
最后再改一下hosts映射。
vim /etc/hosts
主机名不是必须改的,改了方便区分
hostnamectl set-hostname hadoop01
每个节点主机名不同。
*1.4安装mysql*
Mysql早晚用得到,主节点装一个就行,从节点随意。
rpm -Uvh http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
yum repolist enabled | grep "mysql.*-community.*"
yum -y install mysql-community-server
systemctl enable mysqld
systemctl start mysqld
Mysql弄个密码,root-root就行,有需要就自己配置不要忘。
别忘了设置mysql远程连接
mysqladmin -u root -proot
//登录后
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
*1.5通过外部远程管理*
然后下载个Xshell进行管理,新建会话主机IP,端口默认是22,用户身份验证中输入账户密码。我这里是root-root。
*2.hadoop安装*
简单来讲hadoop就是大数据的基础,其中hadoop中提供三个组件HDFS,Yarn,Mapreduce。
HDFS负责整个大数据集群的存储功能,他会把你上传到集群的文件进行分割成块(block),然后将每块存入不同的节点,一个block会在多个节点拥有备份保证文件的安全。
Mapreduce是hadoop集群的计算引擎,大部分程序都需要通过mapreduce进行计算。
Yarn是hadoop的资源调度模块,一个mapreduce程序切分后由yarn分配给不同的节点分别进行运算,再将结果进行整合。
安装时务必保证所有节点配置文件相同!
安装包官网就有,hadoop建议先2.x版本的,3.x版本会有额外的兼容问题
直接rz导入hadoop安装包,解压tar -xzvf [hadoop的压缩包名.gz]
hadoop的安装要依赖jdk。rz导入一个jdk的安装包,同样解压tar -xzvf [jdk压缩包名]
*2.1修改环境变量*
我这里就不在全局改了,全局的环境变量在/etc/profile,修改这个文件会对所有用户生效。我只改/root下的.bash_profile,这个文件只对root用户生效。
##注意,我的安装包都是直接放在/root目录下,会导致其他用户无权限访问,实际生产环境务必改到/usr或者其他全局目录下。
vim /root/.bash_profile
PATH=$PATH:$HOME/bin
export JAVA_HOME=/root/jdk1.8.0_261
export PATH=$JAVA_HOME/bin:$PATH
export HADOOP_HOME=/root/hadoop-2.7.5
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
修改完了重新载入环境变量source /root/.bash_profile,验证一下安装是否成功。
java -version
javac -version
hadoop version
*2.2集群进程分配*
首先设计一下未来将要安装的进程,这个要根据自己集群性能自行制定,理论上来讲要负载均衡,我这里hadoop01内存分配的多一些,可以多运行几个进程。
进程 | hadoop01 | hadoop02 | hadoop03 |
---|---|---|---|
hadoop | datanode | datanode | datanode |
namenode | secondarynamenode | ||
yarn | nodemanager | nodemanager | nodemanager |
resourcemanager | |||
zookeeper | quorumpeermain | quorumpeermain | quorumpeermain |
hbase | hregionserver | hregionserver | hregionserver |
hmaster(hbase是谁启动谁是master) | |||
spark | master | worker | worker |
mysql | mysql | ||
hive | hive | ||
kafka | kafka | kafka | kafka |
修改配置文件,hadoop需要修改的配置文件很多。
切换到配置文件目录下
cd /root/hadoop-2.7.5/etc/hadoop/
ls查看文件列表
*2.3修改hadoop-env.sh*
vim hadoop-env.sh
找到JAVA_HOME,有的版本会藏在注释中也可以:/JAVA进行查找。把JAVA_HOME取消注释,并且改为自己的jdk目录。:wq保存退出。
*2.4修改core-site.xml*
vim core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<!-- 指定namenode的通信地址 -->
<value>hdfs://hadoop01:9000</value>
</property>
<property>
<name>hadoop.tmp.dir