Hadoop完全分布式配置文件
注:这里的版本hadoop为2.7.7,hive为2.3.4,mysql为5.7
(这里可以配置文件可以单独使用为伪分布)
管理员应该使用
etc/hadoop/hadoop-env.sh
和可选的
etc/hadoop/mapred-env.sh
和etc/hadoop/yarn-env.sh
脚本
来对 Hadoop 守护进程的进程环境进行站点特定的定制。
至少,
您必须指定JAVA_HOME
以便在每个远程节点上正确定义它。
本节涉及要在给定配置文件中指定的重要参数
1、 core-site.xml 文件
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/hadoop/tmp</value>
</property>
</configuration>
2、 hdfs-site.xml文件
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:50090</value>
</property>
<property>
<name>dfs.namenode.http-address</name>
<value>master:50070</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/hadoop/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/hadoop/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.permissions</name>
<value>true</value>
</property>
</configuration>
3、 yarn-site.xml 文件
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
4、 mapred-site.xml 文件
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
</configuration>
5、 slaves 文件
master
slave1
slave2
解题思路
修改主机的名字、免密服务、网络映射和防火墙设置
1、修改用户名字
[root@master ~]# vi /etc/hostname
删除内容后改为
你需要的名字(方便记忆),修改后重启机器
2、免密服务
1、生成密钥
[root@master ~]# ssh-keygen
第一次直接回车三次
其他情况具体分析
进入到 { ~/.ssh} 目录
[root@master ~]# cd ~/.ssh
2、拷贝公钥
[root@master .ssh]# cat id_rsa.pub >> authorized_keys
[root@master .ssh]# scp authorized_keys 主机名字@IP地址:~/.ssh
注:每一台机器都要输入生成密钥命令。第一台机器拷贝公钥后,发送到下一台,最后一台拷贝完公钥后,再把公钥分发所有的机器。
3、 网络映射
[root@master .ssh]# vi /etc/hosts
添加一下内容(在文本最下面,有多少个免密就写多少个)
伪分布就写localhost
IP地址 主机名字
3、防火墙设置
第一种:
禁用防火墙
[root@master ~]# systemctl stop firewalld
[root@master ~]# systemctl disable firewalld
第二种:
# 添加端口
[root@master ~]# firewall-cmd --add-port=10050/tcp --permanent
# (永久生效,没有此参数重启后失效)
# 重新载入防火墙
[root@master ~]# firewall-cmd --reload
# 查看端口是否开启
[root@master ~]# firewall-cmd --list-all
安装hadoop生态文件
1、解压
有什么需要的就解压什么
[root@master h3cu_2021]# tar xf hadoop-2.7.7.tar.gz -C /usr/local/src/
[root@master h3cu_2021]# tar xf jdk-8u144-linux-x64.tar.gz -C /usr/local/src/
2、配置环境变量
[root@master h3cu_2021]# vi /etc/profile
在文本最下面添加变量
export JAVA_HOME=/usr/local/src/java
export HADOOP_HOME=/usr/local/src/hadoop
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:
保存退出
3、更新环境变量
[root@master h3cu_2021]# . /etc/profile
配置文件设置
根据上面的Hadoop配置文件添加内容
启动hadoop准备
格式化namenode
[root@master h3cu_2021]# hdfs namenode -format
启动hadoop
[root@master h3cu_2021]# start-all.sh
启动historyserver(这个可以看到历史任务)
[root@master h3cu_2021]# mr-jobhistory-daemon.sh start historyserver
查看节点
[root@master h3cu_2021]# jps
master:
slave1、slave2:
开机的自启动
1、添加hadoop服务
[root@master h3cu_2021]# vi /usr/lib/systemd/system/hadoop.service
[Unit]
Description=hadoop
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/src/hadoop/sbin/start-all.sh
ExecStop=/usr/local/src/hadoop/sbin/stop-all.sh
PrivateTmp=true
[Install]
WantedBy=multi-user.target
[root@master system]# chmod +x hadoop.service # 添加权限
[root@master system]# systemctl start hadoop # 启动
[root@master system]# systemctl stop hadoop # 停止
[root@master system]# systemctl enable hadoop # 自启动
Mysql安装配置
1、安装mysql
这里基于rpm安装
[root@master mysql-5.7.18]# rpm -ivh *.rpm --nodeps --force
2、做好环境配置
启动后自动会初始化密码
[root@master mysql-5.7.18]# systemctl start mysqld
这里顺便添加自启动
[root@master mysql-5.7.18]# systemctl enable mysqld
3、查看密码
[root@master mysql-5.7.18]# grep 'temporary password' /var/log/mysqld.log
2021-12-20T13:02:34.360237Z 1 [Note] A temporary password is generated for root@localhost: lxBDI&H:u1qe
4、登录mysql
[root@master mysql-5.7.18]# mysql -uroot -p
输入查询到的密码
修改密码后才能正常使用
mysql> alter user 'root'@'localhost' identified by 'Mzj_311';
5、配置好hive需要用的设置
查看当前编码
mysql> show variables like 'character_set_database';
创建用户
mysql> create user 'hive'@'localhost' identified by 'Hive_311';
创建数据库
mysql> create database contest charset=utf8;
赋予权限hive用户权限
mysql> grant all privileges on contest.* to 'hive'@'%' identified by 'Hive_311';
刷新权限,将以上操作生效
mysql> flush privileges;
单机hive
1、解压
[root@master h3cu_2021]# tar xf apache-hive-2.3.9-bin.tar.gz -C /usr/local/src/
2、环境配置
设置环境变量
[root@master h3cu_2021]# vi /etc/profile
在最后添加下面内容
export HIVE_HOME=/usr/local/src/hive
export PATH=$PATH:$HIVE_HOME/bin:
刷新变量
[root@master h3cu_2021]# . /etc/profile
删除一个jline包(hadoop,这里有可能有一些版本的没有)
[root@master h3cu_2021]# rm -rf /usr/local/src/hadoop/share/hadoop/yarn/lib/
3、测试启动
初始化元数据
[root@master hive]# schematool -dbType derby -initSchema
启动hive
[root@master hive]# hive
集成hive
1、配置hive连接mysql设置
直接新建修改
[root@master conf]# vi /usr/local/src/hive/conf/hive-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/contest?createDatabaseIfNotExist=true&serverTimezone=GMT&useSSL=false</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>密码</value>
</property>
</configuration>
这里可以把log4j打开(也可以不打开)
[root@master conf]# vi hive-log4j2.properties
2、初始化hivemysql
找到mysql连接jar包,复制到hive/lib目录下
[root@master h3cu_2021]# cp mysql-connector-java-5.1.47.jar /usr/local/src/hive/lib/
初始化mysql
[root@master conf]# schematool -initSchema -dbType mysql
3、登录beeline,查看mysql数据表
进入到hive目录下
[root@master conf]# hiveserver2 &
运行了hiveserver2,不要关闭,然后在另一个会话窗口打开,也可以后台运行
[root@master conf]# beeline
输入beeline后,在当前的beeline界面输入
!connect jdbc:mysql://localhost:3306
然后输入用户名
hive
在输入用户名的当前密码
Hive_311
然后就登录了mysql命令行
接下来就可以使用mysql命令了。
1]# cp mysql-connector-java-5.1.47.jar /usr/local/src/hive/lib/
初始化mysql
```shell
[root@master conf]# schematool -initSchema -dbType mysql
进入到hive目录下
[root@master conf]# hiveserver2 &
运行了hiveserver2,不要关闭,然后在另一个会话窗口打开,也可以后台运行
[root@master conf]# beeline
输入beeline后,在当前的beeline界面输入
!connect jdbc:mysql://localhost:3306
然后输入用户名
hive
在输入用户名的当前密码
Hive_311
然后就登录了mysql命令行
接下来就可以使用mysql命令了。