创建新文件夹(可同时进行)
mkdir -p /usr/java
mkdir -p /usr/zookeeper
mkdir -p /usr/hadoop
mkdir -p /usr/hbase
mkdir -p /usr/mysql
mkdir -p /usr/hive
mkdir -p /usr/scala
mkdir -p /usr/spark
yum install lrzsz
vi /etc/profile //添加环境变量
export JAVA_HOME=/usr/java/jdk1.8.0_171
export CLASSPATH=$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME CLASSPATH
export ZOOKEEPER_HOME=/usr/zookeeper/zookeeper-3.4.10
export PATH=$PATH:$ZOOKEEPER_HOME/bin
export HADOOP_HOME=/usr/hadoop/hadoop-2.7.3
export CLASSPATH=$CLASSPATH:$HADOOP_HOME/lib
export PATH=$PATH:$HADOOP_HOME/bin
export HBASE_HOME=/usr/hbase/hbase-1.2.4
export PATH=$PATH:$HBASE_HOME/bin
export HIVE_HOME=/usr/hive/apache-hive-2.1.1-bin
export PATH=$PATH:$HIVE_HOME/bin
TZ='Asia/Shanghai';export TZ
source /etc/profile //应用环境变量
1.基础配置
1.1 设置主机名
hostnamectl set-hostname master
hostnamectl set-hostname slave1
hostnamectl set-hostname slave2
(各自执行)
bash //立即生效
1.2 修改hosts文件
vi /etc/hosts //(同时执行)(注意自己的配的ip)
192.168.80.100 master
192.168.80.150 slave1
192.168.80.200 slave2
bash //立即生效
1.3 关闭防火墙
systemctl stop firewalld //关闭防火墙
systemctl status firewalld //查看状态
systemctl disable firewalld //开机不自启
1.4 时钟同步
tzselect //选择和修改时区,三台机都执行
5911
yum install -y ntp 安装ntp //三台机都执行
echo -e "server 127.127.1.0\nfudge 127.127.1.0 stratum 10" >> /etc/ntp.conf //master上执行
重启ntp服务: //master执行
/bin/systemctl restart ntpd.service
ntpdate master //slaves进行同步(在slave1,slave2中执行)
1.5 配置ssh免密
生成SSH密钥对: //master上执行
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
把公钥文件复制到另外两个主机上:
ssh-copy-id -i /root/.ssh/id_dsa.pub slave1
ssh-copy-id -i /root/.ssh/id_dsa.pub slave2
测试登录
ssh (slave1/slave2)
exit
2.安装JDK
先在master上执行然后复制到slave1,slave2(三台同时安装)
文件上传解压缩
cd /usr/java
rz
jdk-8u221-linux-x64.tar.gz
tar -zxvf jdk-8u171-linux-x64.tar.gz -C /usr/java/
查看版本
java -version
scp -r /usr/java root@slave1:/usr/
scp -r /usr/java root@slave2:/usr/
3.安装zookeeper
在master上操作
cd /usr/zookeeper
文件上传解压缩
rz
zookeeper-3.4.10.tar.gz
tar -zxvf zookeeper-3.4.10.tar.gz -C /usr/zookeeper/
新建文件夹
cd /usr/zookeeper/zookeeper-3.4.10
新建
mkdir zkdata
mkdir zkdatalog
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cBAYSBhr-1686316240289)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1652190084928.png)]
配置文件zoo.cfg
cd /usr/zookeeper/zookeeper-3.4.10/conf
mv zoo_sample.cfg zoo.cfg
vi zoo.cfg
配置文件
修改
tickTime=2000 #心跳间隔
initLimit=10 #最大初始时间限制10倍心跳
syncLimit=5 #请求应答时长5倍心跳
dataDir=/usr/zookeeper/zookeeper-3.4.10/zkdata
增加
dataLogDir=/usr/zookeeper/zookeeper-3.4.10/zkdatalog
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888
scp -r /usr/zookeeper root@slave1:/usr/
scp -r /usr/zookeeper root@slave2:/usr/
cd /usr/zookeeper/zookeeper-3.4.10/zkdata
echo "1" >> /usr/zookeeper/zookeeper-3.4.10/zkdata/myid(在master中)
echo "2" >> /usr/zookeeper/zookeeper-3.4.10/zkdata/myid(在slave1中)
echo "3" >> /usr/zookeeper/zookeeper-3.4.10/zkdata/myid(在slave2中)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Kkr6ov5R-1686316240291)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1652190176013.png)]
启动zookeeper(三台机器执行)
cd /usr/zookeeper/zookeeper-3.4.10 //或者直接 cd ..
开启服务:bin/zkServer.sh start
查看状态:bin/zkServer.sh status
//(主节点是Follower,其余两个结点一个是Follower,一个是leader)
4.安装Hadoop
先在master上执行,然后复制到slave
cd /usr/hadoop
文件上传解压缩
rz
hadoop-2.7.3.tar.gz
tar -zxvf hadoop-2.7.3.tar.gz -C /usr/hadoop/
配置hadoop组件
cd $HADOOP_HOME/etc/hadoop
cd /usr/hadoop/hadoop-2.7.3/etc/hadoop(不行就用这个)
1.vi hadoop-env.sh
修改
export JAVA_HOME=/usr/java/jdk1.8.0_171
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oDMDtpcw-1686316240293)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1652190300861.png)]
2.core-site.xml–集群全局参数,用于定义系统级别的参数,如HDFS URL 、Hadoop的临时目录等
Hadoop 核心全局配置文件,可在其它配置文件中引用该文件
vi core-site.xml
添加
<property>
<name>fs.default.name</name> //配置NN节点地址与端口号
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name> //用来存放NN临时文件
<value>/usr/hadoop/hadoop-2.7.3/hdfs/tmp</value>
<description>A base for other temporary directories.</description>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>fs.checkpoint.period</name> //检查NN日志时间间隔(单位:秒)
<value>60</value>
</property>
<property>
<name>fs.checkpoint.size</name>
<value>67108864</value>
</property>
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P0aUFqZz-1686316240294)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1652190323332.png)]
3.mapred-site.xml–MapReduce 配置文件,继承 core-site.xml 配置文件
#hadoop是没有这个文件的,需要将mapred-site.xml.template样本文件复制为mapred-site.xml,对其进行编辑:
cp mapred-site.xml.template mapred-site.xml
vi mapred-site.xml
添加
<property>
<!--指定Mapreduce运行在yarn上-->
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
4.yarn-site.xml–YARN 配置文件,继承 core-site.xml 配置文件
vi yarn-site.xml
在<configuration></configuration>中加入以下代码:
<!-- 指定ResourceManager的地址-->
<property>
<name>yarn.resourcemanager.address</name> //RM提供客户端访问的地址和端口
<value>master:18040</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:18030</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:18088</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:18025</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:18141</value>
</property>
<!-- 指定reducer获取数据的方式-->
<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>
5.hdfs-site.xml–HDF的S如名称节点和数据节点的存放位置、文件副本的个数、文件的读取权限等
vi hdfs-site.xml
在<configuration></configuration>中加入以下代码:
<property>
<name>dfs.replication</name> //指定hdfs保存数据的副本数量
<value>2</value>
</property>
<property>
<name>dfs.namenode.name.dir</name> //指定hdfs中NN的本地存储位置
<value>file:/usr/hadoop/hadoop-2.7.3/hdfs/name</value>
<final>true</final>
</property>
<property>
<name>dfs.datanode.data.dir</name> //指定hdfs中DN的本地存储位置
<value>file:/usr/hadoop/hadoop-2.7.3/hdfs/data</value>
<final>true</final>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name> //定义HDFS对应的HTTP服务器地址和端口
<value>master:9001</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
echo -e "slave1\nslave2" > slaves
echo -e "master" > master
scp -r /usr/hadoop root@slave1:/usr/
scp -r /usr/hadoop root@slave2:/usr/
格式化namenode(仅在master执行)
hadoop namenode -format
当出现“Exiting with status 0”的时候,表明格式化成功
开启hadoop集群
cd /usr/hadoop/hadoop-2.7.3 (仅在master上执行)
主节点开启服务:sbin/start-all.sh
jps查看
(主节点为S、R、N,从节点为D、N)
5.安装hbase
先在master上执行然后复制到slave
cd /usr/hbase
文件上传解压缩
rz
hbase-1.2.4-bin.tar.gz
tar -zxvf hbase-1.2.4-bin.tar.gz -C /usr/hbase
修改配置文件
cd /usr/hbase/hbase-1.2.4/conf
vi hbase-env.sh
添加
export HBASE_MANAGES_ZK=false
export JAVA_HOME=/usr/java/jdk1.8.0_171
export HBASE_CLASSPATH=/usr/hadoop/hadoop-2.7.3/etc/hadoop
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-azxVT6h7-1686316240294)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1652190566633.png)]
vi hbase-site.xml
在<configuration></configuration>中加入以下代码:
添加
<property>
<name>hbase.rootdir</name>
<value>hdfs://master:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.master</name>
<value>hdfs://master:6000</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>master,slave1,slave2</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/usr/zookeeper/zookeeper-3.4.14</value>
</property>
echo -e "slave1\nslave2" > regionservers
hadoop配置文件拷入hbase的目录下 (在conf 目录下执行)
cd /usr/hbase/hbase-1.2.4/conf
cp /usr/hadoop/hadoop-2.7.3/etc/hadoop/hdfs-site.xml .
cp /usr/hadoop/hadoop-2.7.3/etc/hadoop/core-site.xml .
scp -r /usr/hbase root@slave1:/usr/
scp -r /usr/hbase root@slave2:/usr/
运行和测试
source /etc/profile
cd /usr/hbase/hbase-1.2.4/
开启:bin/start-hbase.sh
测试:jps(出现HMaster,需保证hadoop和zookeeper已开启)
6.安装hive
(选用hive的远程模式,
slave2安装mysql用于存放元数据,
slave1作为hive server作为thrift 服务器,
master作为client客户端进行操作)
slave2上安装mysql
我的方法:
cd /usr/mysql
rz导入mysql-5.7.25的tar包
解压
tar -xvf mysql-5.7.25-1.el7.x86_64.rpm-bundle.tar -C/usr/mysql
rpm -e --nodeps mariadb-libs //删除mari数据库
cd /usr/mysql //进入目录后ls寻找解压的rpm包
rpm -ivh mysql-community-common-5.7.25-1.el7.x86_64.rpm
libs/client/server( --nodeps) //按顺序依次解压
重载修改过的配置文件 systemctl daemon-reload
开启服务 systemctl start mysqld
开机自启 systemctl enable mysqld
查找产生的随机密码
grep "temporary password" /var/log/mysqld.log
登录mysql
mysql -uroot -p
设置密码安全策略为低级 set global validate_password_policy=0;
设置密码长度最短为4 set global validate_password_length=4;
修改密码 alter user 'root'@'localhost' identified by '123456';
\q退出
mysql -uroot -p123456
创建用户: create user 'root'@'%' identified by '123456';
允许远程连接: grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
刷新权限 flush privileges;
master做client客户端
文件上传解压缩 //master
cd /usr/hive
rz
apache-hive-2.1.1-bin.tar.gz
tar -zxvf apache-hive-2.1.1-bin.tar.gz -C /usr/hive
master中将hive文件复制到slave1:
scp -r /usr/hive/apache-hive-2.1.1-bin root@slave1:/usr/hive/
冲突包 易错(jline-2.12.jar)注意版本!!
source /etc/profile
hive --version
cp /usr/hive/apache-hive-2.1.1-bin/lib/jline-2.12.jar /usr/hadoop/hadoop-2.7.3/share/hadoop/yarn/lib/ (在master上执行)
(在slave1上执行)
cd /usr/hive/apache-hive-2.1.1-bin/lib
ls
rz
jar包
修改hive-env.sh (master和slave1)
cd /usr/hive/apache-hive-2.1.1-bin/conf
cp hive-env.sh.template hive-env.sh
vi hive-env.sh
修改
HADOOP_HOME=/usr/hadoop/hadoop-2.7.3
export HIVE_CONF_DIR=/usr/hive/apache-hive-2.1.1-bin/conf
export HIVE_AUX_JARS_PATH=/usr/hive/apache-hive-2.1.1-bin/lib
修改hive-site.xml(master)
vi 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>
slave1做hive server服务端
修改hive-site.xml
vi hive-site.xml
添加
<configuration>
<!-- Hive产生的元数据存放位置-->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive_remote/warehouse</value>
</property>
<!-- 数据库连接JDBC的URL地址-->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://slave2:3306/hive?createDatabaseIfNotExist=true&useSSL=false</value>
</property>
<!-- 数据库连接driver,即MySQL驱动-->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</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>
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>
<property>
<name>datanucleus.schema.autoCreateAll</name>
<value>true</value>
</property>
</configuration>
启动hive
服务器端初始化数据库,启动metastore服务
在slave1上:schematool -dbType mysql -initSchema
cd /usr/hive/apache-hive-2.1.1-bin/
在slave1上:bin/hive --service metastore
schematool -dbType mysql -initSchema --verbose
在master上:bin/hive
测试hive是否启动成功:hive>show databases;