[安装] 搭建hadoop集群
参考资料:Hadoop集群搭建,14张过程截图超详细教程
目录
目录
hadoop集群构建 for ljgk
一、基础环境准备
修改主机名称
配置yum源
1. 局域网中配置代理环境
2.或者使用私有的yum源的方式
关闭防火墙
配置ip映射
集群免密登录
修改操作系统最大打开文件数(句柄数量)
设置服务器时间同步
二、构建hadoop集群
安装jdk
添加hadoop用户,并赋予权限(强烈推荐做)
修改hadoop配置文件(不完全配置)
格式化hdfs的节点
验证部署结果
[参考文档]
HDFS新增节点与删除节点
待完成(非紧急)
hadoop集群构建 for xxcom
搭建集群之前的准备工作:
下载hadoop安装包:[大数据]hadoop_2.7.4.tar.gz GZ文件[254.33MB]-码姐姐
新购买的服务器搭建大数据集群之前的准备工作_fct2001140269的博客-CSDN博客
一、基础环境准备
jdk1.8
hadoop2.7.2 x
Centos7.6
修改主机名称
#查看主机名
hostname
#临时修改主机名称
hostname hadoop01
#永久修改主机名
hostnamectl set-hostname hadoop01
配置yum源
1. 局域网中配置代理环境
执行vim /root/.bashrc中添加代理服务地址:
#有一台专门的代理服务器
export http_proxy=http://172.18.8.162:7010
export https_proxy=http://172.18.8.162:7010
然后使用. /root/.bashrc命令,使得配置的环境生效.
设置yum源
进入209物理机:/etc/yum.repos.d,将配置好的yum源拷贝到对应的208机器上;
yum clean all
yum makecache
2.或者使用私有的yum源的方式
CentOS7配置离线YUM源
关闭防火墙
#查看防火墙状态
systemctl status firewalld.service
#关闭当前防火墙
systemctl stop firewalld.service
#永久关闭防火墙
systemctl disable firewalld.service
#查看是否生效防火墙状态
systemctl status firewalld.service
配置ip映射
修改主机名称,分别在四台机器中执行修改主机名,永久有效
hostnamectl set-hostname hadoop01
hostnamectl set-hostname hadoop02
hostnamectl set-hostname hadoop03
hostnamectl set-hostname hadoop04
配置映射关系vim /etc/hosts 如下所示
172.18.8.205 hadoop01
172.18.8.207 hadoop02
172.18.8.208 hadoop03
172.18.8.209 hadoop04
集群免密登录
注意:设置免密登录之前,请先设置号“主机名称”,以及“主机到ip的映射”
CentOS7 配置ssh免密登录_青春的样子1的博客-CSDN博客_centos7ssh免密登录
使用ssh-keygen命令和ssh-copy-id命令(当前是在root用户下执行的免密登录,hadoop集群需要在hadoop用户下免密登录配置,可以看下文配置)
例如在任何一台机器上执行如下命令
#在任意一台机器上执行,一直按enter,生成秘钥
ssh-keygen
#将秘钥拷贝到其他的节点
ssh-copy-id hadoop01
ssh-copy-id hadoop02
ssh-copy-id hadoop03
ssh-copy-id hadoop04
最后,验证ssh免密是否可以行
修改操作系统最大打开文件数(句柄数量)
参考网上配置即可
`
############ limits 相关 ############
# 扩大句柄数
sed -i 's/4096/1000000/g' /etc/security/limits.d/20-nproc.conf
cat <<'EOF'> /etc/security/limits.d/20-all-users.conf
* soft nproc 1000000
* hard nproc 1000000
* soft nofile 1000000
* hard nofile 1000000
EOF
设置服务器时间同步
设置时区,统一设置为东8区,手动同步时间(hbase对集群服务器之间时间要求比较严格)
date -R ##查看时区时候是东八区时间
date -s 'hh:mm:ss' #设置相应的时间
clock -w #保存时钟,将时间写入系统硬盘,永久有效
hwclock -w:#当我们进行完 Linux 时间的校时后,还需要以 hwclock 来更新 BIOS 的时间,因为每次重新启动的时候,系统会重新由 BIOS 将时间读出来
二、构建hadoop集群
安装jdk
过程略.....
#安装 jdk1.8.0_261
#并设置环境变量
添加hadoop用户,并赋予权限(强烈推荐做)
-
添加hadoop用户(默认自动添加hadoop用户组),在切换到hadoop用户的情况下,进行ssh免密登录配置
2、新建用户hadoop
#useradd hadoop(自动建组hadoop)
3、设置用户密码(配置ssh免密需要)
#passwd hadoop
4、修改hadoop安装目录的权限
#chown -R hadoop:hadoop /opt/software/hadoop-2.8.1
5、hadoop用户配置ssh免密
#su - hadoop
$ssh_keygen+ssh_copy_id命令配合使用即可
修改hadoop配置文件(不完全配置)
core-site.xml
<configuration>
<property>
<name>hadoop.proxyuser.hue.hosts</name>
<value>*</value>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop02:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/data/hadoop/hadoop-2.7.4/tmp</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>hadoop.proxyuser.hue.groups</name>
<value>*</value>
</property>
<property>
<name>hadoop.http.staticuser.user</name>
<value>hadoop</value>
</property>
<!--hive beeline with password-->
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
</configuration>
修改hadoop安装目录下的/etc/hadoop/中文件,如下修改$HAOOP_HOME/etc/hadoop/配置hdfs-site.xml等
<configuration>
<property>
<name>yarn.application.classpath</name>
</property>
<!--环境变量的继承-->
<property>
<name>yarn.nodemanager.env-whitelist</name>,
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop02</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!--nodemanager-->
<!-- 如果vmem、pmem资源不够,会报错,此处将资源监察置为false -->
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<!--yarn.resourcemanager-->
<!-- 选择调度器。默认容量-->
<property>
<name>yarn.resourcemanager.scheduler.class</name>
</property>
<!--ResourceManager处理调度器请求的现场数量,一共3*4=12,留出几个供其他使用-->
<property>
<name>yarn.resourcemanager.scheduler.client.thread-count</name>
<value>40</value>
</property>
<!--是否让yarn自动检测硬件进行配置-->
<property>
<name>yarn.nodemanager.resource.detect-hardware-capabilities</name>
<value>false</value>
</property>
<!--是否将虚拟核数当作CPU核数 默认false-->
<property>
<name>yarn.nodemanager.resource.count-logical-processors-as-cores</name>
<value>false</value>
</property>
<!--虚拟核数和物理核数乘数-->
<property>
<name>yarn.nodemanager.resource.pcores-vcores-multiplier</name>
<value>2.0</value>
</property>
<!--nodemanager使用内存数,默认8g,但是服务器只有4G,修改为4g-->
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>100000</value>
</property>
<!--nodemanager的CPU核数,默认设置为8个,但是服务器只有4核,修改为4个-->
<property>
<name>yarn.nodemanager.resource.cpu-vcores</name>
<value>20</value>
</property>
<!--容器最小内存,默认1g-->i
<!--yarn.scheduler-->
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>1024</value>
</property>
<!--容器最大内存,默认8g,但是服务器只有4G,修改为2g-->
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>20480</value>
</property>
<!--容器最小CPU核数,默认1个-->
<property>
<name>yarn.scheduler.minimum-allocation-vcores</name>
<value>1</value>
</property>
<!--容器最大CPU核数,默认4个,但是服务器只有4核,修改为2个-->
<property>
<name>yarn.schedluler.maximum-allocation-vcores</name>
<value>40</value>
</property>
<!--虚拟内存和物理内存设置比例,默认2.1-->
<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>2.1</value>
</property>
</configuration>
修改mapred-site.xml文件
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.map.java.opts</name>
<value>-Xmx3072m</value>
</property>
<property>
<name>mapred.child.java.opts</name>
<value>-Xmx4096m</value>
</property>
<property>
<name>mapreduce.reduce.java.opts</name>
<value>-Xmx6144m</value>
</property>
<property>
<name>mapreduce.reduce.memory.mb</name>
<value>8192</value>
</property>
<property>
<name>mapreduce.map.memory.mb</name>
<value>4096</value>
</property>
<property>
<name>yarn.nodemanager.bind-host</name>
<value>0.0.0.0</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop02:8188</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop02:10020</value>
</property>
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=/opt/hadoop/hadoop-2.7.4</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=/opt/hadoop/hadoop-2.7.4</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=/opt/hadoop/hadoop-2.7.4</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop02:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop02:19888</value>
</property>
</configuration>
其他配置参考对应的参考文档,详情参考172.18.8.207:/opt/hadoop/hadoop-2.7.4/etc/hadoop/下的配置,主要是各种 ***-site.xml格式的文件,slave文件等;
格式化hdfs的节点
$HADOOP_HOME/bin/hdfs namenode -format ljgk_hadoop_cluster
启动hadoop集群
#启动hadoop集群之前,切换hadoop用户,密码是hadoop
su hadoop
#启动hadoop集群
${HADOOP_HOME}/sbin/start-all.sh
特别强调:今后操作hadoop集群,都是要以hadoop的用户身份操作;
验证部署结果
-
使用jps查看各个节点上进程的运行情况
例如:hadoop03
[hadoop@hadoop02 docker-dss]# jps
23521 ResourceManager
56951 PrestoServer
139752 Jps
23866 NodeManager
21613 NameNode
21837 DataNode
-
验证hdfs和yarn的可用性
·提交一个简单mr示例
#提交安装包中自带的mr程序,查看yarn运行情况,查看hdfs上是否有结果输出
hadoop jar /opt/bigdata/hadoop-2.9.2/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-2.9.2-tests.jar TestDFSIO -Dmapreduce.job.queuename=dmgeo -write -nrFiles 10 -fileSize 128MB
hdfs访问地址:http://172.18.8.207:50070
yarn访问地址:http://172.18.8.207:8088
[参考文档]
HDFS新增节点与删除节点
HDFS新增节点与删除节点
HDFS系列讲解之HDFS新增节点与删除节点
hadoop伪分布式搭建(root用户迁移到非root)
待完成(非紧急)
-
yarn中的timelineServer服务:YARN之配置Timeline服务_TomAndersen的博客-CSDN博客_yarn时间线服务
-
增加hadoop中的hadoop用户;
-
总结hadoop的更多使用场景;
-
shell脚本化部署hadoop