大数据工程师
常见问题
数据人必须了解的大数据中台技术架构
数据采集&传输
Flume
Logstash
Flume和Logstash对比
数据存储
Hadoop
Hbase
数据计算&查询
Hive
Spark
大数据实践
集群搭建
医疗数据分析
高校专业学科分析
互联网日志分析
本文档使用 MrDoc 发布
-
+
首页
集群搭建
## 一、基础环境配置 1. 按照左侧虚拟机名称修改对应主机名(分别为master、slave1、slave2,使用hostnamectl命令)。 操作环境:master、slave1、slave2 ``` # master [root@iZ2zebu9x0o69aeixmyzigZ ~]# hostnamectl set-hostname master [root@iZ2zebu9x0o69aeixmyzigZ ~]# hostname master [root@iZ2zebu9x0o69aeixmyzigZ ~]# bash # slave1 hostnamectl set-hostname slave1 bash # slave2 hostnamectl set-hostname slave2 bash ``` 2. 修改host文件添加左侧master、slave1、slave2节点IP与主机名映射(使用内网IP)。 操作环墳:master、slave1、slave2 ``` echo "172.18.13.157 master" >> /etc/hosts echo "172.18.13.156 slave1" >> /etc/hosts echo "172.18.32.47 slave2" >> /etc/hosts ``` 3. 时区更改为上海时间(CST+0800时区)。 操作环境:master、slave1、slave2 ``` echo "TZ='Asia/Shanghai'; export TZ" >> /etc/profile source /etc/profile date -R #或者 timedatectl set-timezone Asia/Shanghai timedatectl ``` 4. 环境已经安装NTP,修改master节点NTP配置,设置master为本地时间服务器,屏蔽默认server,服务器层级设为10。 操作环境:master ``` vim /etc/ntp.conf # 注释掉 # server 0.centos.pool.ntp.org iburst # server 1.centos.pool.ntp.org iburst # server 2.centos.pool.ntp.org iburst # server 3.centos.pool.ntp.org iburst # 添加以下内容 server 127.127.1.0 fudge 127.127.1.0 stratum 10 ``` 5. 开启NTP服务。 操作环境:master ``` systemctl start ntpd.service ``` 6. 添加定时任务--在早十-晚五时间段内每隔半个小时同步一次本地服务器时间(24小时制、使用用户root任务调度crontab,服务器地址使用主机名)。 操作环境:slave1、slave2 ``` # Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user-name command to be executed # 方式一: crontab -e */30 10-17 * * * /usr/sbin/ntpdate master # 方式二: echo "*/30 10-17 * * * /usr/sbin/ntpdate master" >> /var/spool/cron/root ``` 7. 主节点生成公钥文件id_rsa.pub(数字签名RSA,用户root,主机名master)。 操作环境:master ``` ssh-keygen ``` 8. 建立master使用root用户ssh访问localhost免密登录。 操作环境:master ``` # 将本机的公钥复制到授权列表文件authorized_keys中 ssh-copy-id -i /root/.ssh/id_rsa.pub localhost # 验证 ssh master exit ssh localhost exit ``` 9. 建立master使用root用户到slave1的ssh免密登录访问。 操作环境:master ``` ssh-copy-id -i /root/.ssh/id_rsa.pub slave1 ``` 10. 建立master使用root用户到slave2的ssh免密登录访问。 操作环境:master ``` ssh-copy-id -i /root/.ssh/id_rsa.pub slave2 ``` 11. 将jdk安装包解压到/usr/java目录(安装包存放于/usr/package277/,路径自行创建,解压后文件夹为默认名称,其他安装同理)。 操作环境:master、slave1、slave2 12. 配置系统环境变量JAVA_HOME,同时将JDK安装路径中bin目录加入PATH系统变量,注意生效变量,查看JDK版本。 操作环境:master、slave1、slave2 ``` # 全程master节点操作 mkdir -p /usr/java cd /usr/package277/ tar -zxvf jdk-8u221-linux-x64.tar.gz -C /usr/java/ vim /etc/profile export JAVA_HOME=/usr/java/jdk1.8.0_221 export PATH=$PATH:$JAVA_HOME/bin source /etc/profile java -version # 分发给slave1和slave2 scp -r /usr/java root@slave1:/usr/ scp -r /usr/java root@slave2:/usr/ scp /etc/profile root@slave1:/etc/ scp /etc/profile root@slave2:/etc/ ``` ## 二、Hadoop集群搭建 1. 将Hadoop安装包解压到指定路径/usr/hadoop(安装包存放于/usr/package277/) 操作环境:master、slave1、slave2 2. 配置环境变量HADOOP_HOME,将Hadoop安装路径中bin目录和sbin目录加入PATH系统变量,注意生效变量 操作环境:master、slave1、slave2 ``` # 全程master节点操作 mkdir -p /usr/hadoop cd /usr/package277/ tar -zxvf hadoop-2.7.7.tar.gz -C /usr/hadoop/ vim /etc/profile export HADOOP_HOME=/usr/hadoop/hadoop-2.7.7 export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin source /etc/profile hadoop version # 分发给slave1和slave2 scp -r /usr/hadoop root@slave1:/usr/ scp -r /usr/hadoop root@slave2:/usr/ scp /etc/profile root@slave1:/etc/ scp /etc/profile root@slave2:/etc/ # slave1执行 source /etc/profile # slave2执行 source /etc/profile ``` 3. 配置Hadoop运行环境JAVA_HOME 操作环境:master、slave1、slave2 4. 设置全局参数,指定HDFS上NameNode地址为master,端口默认为9000 操作环境:master、slave1、slave2 5. 指定临时存储目录为本地/root/hadoopData/tmp(要求为绝对路径,下同) 操作环境:master、slave1、slave2 ``` # 全程master节点操作 cd /usr/hadoop/hadoop-2.7.7/etc/hadoop vim hadoop-env.sh export JAVA_HOME=/usr/java/jdk1.8.0_221 vim core-site.xml <property> <name>fs.default.name</name> <value>hdfs://master:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/root/hadoopData/tmp</value> </property> ``` 6. 设置HDFS参数,指定备份文本数量为2 操作环境:master、slave1、slave2 7. 设置HDFS参数,指定NN存放元数据信息路径为本地/root/hadoopData/name;指定DN存放元数据信息路径为本地/root/hadoopData/data(要求为绝对路径) 操作环境:master、slave1、slave2 8. 设置HDFS参数,关闭hadoop集群权限校验(安全配置),允许其他用户连接集群;指定datanode之间通过域名方式进行通信 操作环境:master、slave1、slave2 ``` # 全程master节点操作 #dfs.replication 数据块的副本数量 #dfs.namenode.name.dir NameNode在本地文件系统中持久存储命名空间和事务日志的路径 #dfs.datanode.data.dir DataNode在本地文件系统中存放块的路径 #dfs.permissions 集群权限系统校验 #dfs.datanode.use.datanode.hostname datanode之间通过域名方式通信 vim hdfs-site.xml <property> <name>dfs.replication</name> <value>2</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>/root/hadoopData/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>/root/hadoopData/data</value> </property> <property> <name>dfs.permissions</name> <value>false</value> </property> <property> <name>dfs.datanode.use.datanode.hostname</name> <value>true</value> </property> ``` 9. 设置YARN运行环境$JAVA_HOME参数 操作环境:master、slave1、slave2 ``` # 全程master节点操作 # 方式一 echo "export JAVA_HOME=/usr/java/jdk1.8.0_221" >> yarn-env.sh # 方式二 vim yarn-env.sh export JAVA_HOME=/usr/java/jdk1.8.0_221 ``` 10. 设置YARN核心参数,指定ResourceManager进程所在主机为master,端口为18141;指定mapreduce 获取数据的方式为mapreduce_shuffle 操作环境:master、slave1、slave2 ``` # 全程master节点操作 #yarn.resourcemanager.admin.address 用于指定RM管理界面的地址(主机:端口) #yarn.nodemanager.aux-services mapreduce 获取数据的方式,指定在进行mapreduce作业时,yarn使用mapreduce_shuffle混洗技术。这个混洗技术是hadoop的一个核心技术,非常重要。 #yarn.nodemanager.auxservices.mapreduce.shuffle.class 用于指定混洗技术对应的字节码文件,值为org.apache.hadoop.mapred.ShuffleHandler vim yarn-site.xml <property> <name>yarn.resourcemanager.admin.address</name> <value>master:18141</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property> ``` 11. 设置计算框架参数,指定MR运行在yarn上 操作环境:master、slave1、slave2 ``` # 全程master节点操作 # mapreduce.framework.name 指定执行MapReduce作业的运行时框架。属性值可以是local,classic或yarn。 cp mapred-site.xml.template mapred-site.xml vim mapred-site.xml <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> ``` 12. 设置节点文件,要求master为主节点; slave1、slave2为子节点 操作环境:master、slave1、slave2 ``` # 全程master节点操作 cd /usr/hadoop/hadoop-2.7.7/etc/hadoop vim master master vim slaves slave1 slave2 # 分发给slave1和slave2 scp -r /usr/hadoop root@slave1:/usr/ scp -r /usr/hadoop root@slave2:/usr/ ``` 13. 对文件系统进行格式化 操作环境:master 特别注意:只在master节点进行一次,首次启动Hadoop集群之前首先对文件系统进行格式化。 ``` # 全程master节点操作 hdfs namenode -format ``` 14.启动Hadoop集群查看各节点服务 操作环境:slave1、slave2 ``` # 全程master节点操作 # 在master节点启动 # start-dfs.sh start-yarn.sh start-all.sh ``` 15.查看集群运行状态是否正常 操作环境:master ``` hdfs dfsadmin -report ``` ## 三、Hive集群搭建 ### 安装数据库 1. 环境中已经安装mysql-community-server,关闭mysql开机自启服务 操作环境:slave2 2. 开启MySQL服务 操作环境:slave2 3. 判断mysqld.log日志下是否生成初临时密码 操作环境:slave2 4. 设置mysql数据库本地root用户密码为123456 操作环境:slave2 ``` # 全程slave2节点操作 systemctl disable mysqld.service 启动mysql服务:systemctl start mysqld.service 查看mysql服务:systemctl status mysqld.service grep "temporary password" /var/log/mysqld.log mysql -uroot -p 设置密码强度为低级: set global validate_password_policy=0; 设置密码长度: set global validate_password_length=4; 修改本地密码: alter user 'root'@'localhost' identified by '123456'; 退出: exit mysql -uroot -p123456 # 根据要求满足任意主机节点root的远程访问权限(否则后续hive无法连接mysql); GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION; # 注意刷新权限 flush privileges; exit ``` ### Hive基础环境配置 1. 将Hive安装包解压到指定路径/usr/hive(安装包存放于/usr/package277/) 操作环境:master、slave1 2. 配置环境变量HIVE_HOME,将Hive安装路径中的bin目录加入PATH系统变量,注意生效变量 操作环境:master、slave1 ``` # 全程master节点操作 mkdir -p /usr/hive cd /usr/package277/ tar -zxvf apache-hive-2.3.4-bin.tar.gz -C /usr/hive/ vim /etc/profile export HIVE_HOME=/usr/hive/apache-hive-2.3.4-bin export PATH=$PATH:$HIVE_HOME/bin source /etc/profile hive --version ``` 3. 修改HIVE运行环境,配置Hadoop安装路径HADOOP_HOME 操作环境:master、slave1 4. 修改HIVE运行环境,配置Hive配置文件存放路径HIVE_CONF_DIR 操作环境:master、slave1 5. 修改HIVE运行环境,配置Hive运行资源库路径HIVE_AUX_JARS_PATH 操作环境:master、slave1 ``` # 全程master节点操作 cd /usr/hive/apache-hive-2.3.4-bin/conf/ cp hive-env.sh.template hive-env.sh vim hive-env.sh # Set HADOOP_HOME to point to a specific hadoop install directory export HADOOP_HOME=/usr/hadoop/hadoop-2.7.7 # Hive Configuration Directory can be controlled by: export HIVE_CONF_DIR=/usr/hive/apache-hive-2.3.4-bin/conf # Folder containing extra libraries required for hive compilation/execution can be controlled by: export HIVE_AUX_JARS_PATH=/usr/hive/apache-hive-2.3.4-bin/lib 远程复制,分发给slave1: scp -r /usr/hive root@slave1:/usr/ scp /etc/profile root@slave1:/etc/ # slave1执行 source /etc/profile ``` 6.解决jline的版本冲突,将$HIVE_HOME/lib/jline-2.12.jar同步至$HADOOP_HOME/share/hadoop/yarn/lib/下 操作环境:master、slave1 ``` # 全程master节点操作 cp $HIVE_HOME/lib/jline-2.12.jar $HADOOP_HOME/share/hadoop/yarn/lib/ ssh root@slave1 "cp $HIVE_HOME/lib/jline-2.12.jar $HADOOP_HOME/share/hadoop/yarn/lib/" ``` ### 配置HIVE元数据至MySQL 1. 驱动JDBC拷贝至hive安装目录对应lib下(依赖包存放于/usr/package277/) 操作环境:slave1 2. 配置元数据数据存储位置为/user/hive_remote/warehouse 操作环境:slave1 3. 配置数据库连接为MySQL 操作环境:slave1 4. 配置连接JDBC的URL地址主机名及默认端口号3306,数据库为hive,如不存在自行创建,ssl连接方式为false 操作环境:slave1 5. 配置数据库连接用户 操作环境:slave1 6. 配置数据库连接密码 操作环境:slave1 ``` # 全程slave1节点操作 cp /usr/package277/mysql-connector-java-5.1.47-bin.jar $HIVE_HOME/lib vim /usr/hive/apache-hive-2.3.4-bin/conf/hive-site.xml <configuration> <!-- Hive产生的元数据存放位置--> <property> <name>hive.metastore.warehouse.dir</name> <value>/user/hive_remote/warehouse</value> </property> <!-- 数据库连接driver,即MySQL驱动--> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> </property> <!-- 数据库连接JDBC的URL地址--> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://slave2:3306/hive?createDatabaseIfNotExist=true&useSSL=false</value> </property> <!-- MySQL数据库用户名--> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>root</value> </property> <!-- MySQL数据库密码--> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>123456</value> </property> </configuration> ``` ### 配置HIVE客户端 1. 配置元数据存储位置为/user/hive_remote/warehouse 操作环境:master 2. 关闭本地metastore模式 操作环境:master 3. 配置指向metastore服务的主机为slave1,端口为9083 操作环境:master ``` # 全程master节点操作 vim /usr/hive/apache-hive-2.3.4-bin/conf/hive-site.xml <configuration> <!-- Hive产生的元数据存放位置--> <property> <name>hive.metastore.warehouse.dir</name> <value>/user/hive_remote/warehouse</value> </property> <!--- 使用本地服务连接Hive,默认为true--> <property> <name>hive.metastore.local</name> <value>false</value> </property> <!-- 连接服务器--> <property> <name>hive.metastore.uris</name> <value>thrift://slave1:9083</value> </property> </configuration> ``` ### 启动Hive 1. 服务器端初始化数据库,启动metastore服务 操作环境:slave1 ``` # 全程slave1节点操作 # 初始化数据库 schematool -dbType mysql -initSchema # 启动metastore服务 nohup hive --service metastore & ``` 2. 客户端开启进入hive,创建hive数据库 操作环境:master ``` # 全程master节点操作 # 进入Hive客户端 hive create database hive; show databases; exit; ```
LazzMan
2023年10月25日 17:51
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
PDF文档(打印)
分享
链接
类型
密码
更新密码