三台hdfs集群
三台zookeeper集群
1.集群规划
192.168.25.34 hadoop5 zknode1
192.168.25.35 hadoop6 zknode2
192.168.25.36 hadoop7 zknode3192.168.25.34 hadoop5 NameNode(actvie) & DataNode & JournalNode & ZKFC
192.168.25.35 hadoop6 NameNode(standby) & DataNode & JournalNode & ZKFC
192.168.25.36 hadoop7 DataNode & JournalNode
2.安装zookeeper
解压zookeeper
tar -xvf zookeeper-3.4.12
同步其他机器,命令如下
scp -r zookeeper-3.4.12 root@hadoop6:/bigdata/zookeeper-3.4.12
scp -r zookeeper-3.4.12 root@hadoop7:/bigdata/zookeeper-3.4.12
3.在每一个zk节点上创建zk数据目录
mkdir /bigdata/zookeeper-3.4.12/zkdata
4.在每一个节点的zk数据目录中创建一个myid文件,存放一个数字,并且唯一
zk1:echo "1" >> /bigdata/zookeeper-3.4.12/zkdata/myid
zk2:echo "2" >> /bigdata/zookeeper-3.4.12/zkdata/myid
zk3:echo "3" >> /bigdata/zookeeper-3.4.12/zkdata/myid
5.在每一个zk节点数据目录中创建一个zoo.cfg 配置文件
zk1-2-3:touch /bigdata/zookeeper-3.4.12/zkdata/zoo.cfg
6.修改不同节点配置文件
zk1:如下 server.x 中的x 必须时当前 myid 中的数字
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/bigdata/zookeeper-3.4.12/zkdata
clientPort=3001
server.1=hadoop5:3002:3003
server.2=hadoop6:4002:4003
server.3=hadoop7:5002:5003
zk2:如下 server.x 中的x 必须时当前 myid 中的数字
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/bigdata/zookeeper-3.4.12/zkdata
clientPort=4001
server.1=hadoop5:3002:3003
server.2=hadoop6:4002:4003
server.3=hadoop7:5002:5003
zk2:如下 server.x 中的x 必须时当前 myid 中的数字
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/bigdata/zookeeper-3.4.12/zkdata
clientPort=5001
server.1=hadoop5:3002:3003
server.2=hadoop6:4002:4003
server.3=hadoop7:5002:5003
7.每台机器修改环境变量
export ZOOKEEPER_HOME=/bigdata/zookeeper-3.4.12
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$ZOOKEEPER_HOME/bin
source /etc/profile
8.启动每台zk
zkServer.sh start /bigdata/zookeeper-3.4.12/zkdata/zoo.cfg
zkServer.sh stop /bigdata/zookeeper-3.4.12/zkdata/zoo.cfg
9.查看状态
zkServer.sh status /bigdata/zookeeper-3.4.12/zkdata/zoo.cfg
10.安装hdfs集群
192.168.25.34 hadoop5 NameNode(actvie) & DataNode & JournalNode & ZKFC
192.168.25.35 hadoop6 NameNode(standby) & DataNode & JournalNode & ZKFC
192.168.25.36 hadoop7 DataNode & JournalNode
centos7.x 必须安装依赖 yum install psmisc -y
11.解压hadoop安装包
略
12.配置环境变量
略
13.修改hadoop中配置
a).hadoop-env.sh 中 修改java环境变量
b).core-site.xml 中添加
<!--hdfs主要入口不再是一个具体机器而是一个虚拟的名称-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://ns</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/bigdata/hadoop-2.9.2/data</value>
</property>
<property>
<name>ha.zookeeper.quorum</name>
<value>hadoop5:3001,hadoop6:4001,hadoop7:5001</value>
</property>
c).hdfs-site.xml 中添加
<!--指定hdfs的nameservice为ns,需要和core-site.xml中保持一致-->
<property>
<name>dfs.nameservices</name>
<value>ns</value>
</property>
<!--ns下面有两个NameNode,分别是nn1,nn2 -->
<property>
<name>dfs.ha.namenodes.ns</name>
<value>nn1,nn2</value>
</property>
<!--nn1的RPC通信地址-->
<property>
<name>dfs.namenode.rpc-address.ns.nn1</name>
<value>hadoop5:9000</value>
</property>
<!--nn2的RPC通信地址-->
<property>
<name>dfs.namenode.rpc-address.ns.nn2</name>
<value>hadoop6:9000</value>
</property>
<!--nn1的http通信地址-->
<property>
<name>dfs.namenode.http-address.ns.nn1</name>
<value>hadoop5:50070</value>
</property>
<!--nn2的http通信地址-->
<property>
<name>dfs.namenode.http-address.ns.nn2</name>
<value>hadoop6:50070</value>
</property>
<!--指定NameNode的元数据在JournalNode上的存放位置-->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://hadoop5:8485;hadoop6:8485;hadoop7:8485/ns</value>
</property>
<!--指定JournalNode在本地磁盘存放数据的位置-->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/bigdata/zookeeper-3.4.12/journal</value>
</property>
<!--开启NameNode故障时自动切换-->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<!--配置失败自动切换实现方式-->
<property>
<name>dfs.client.failover.proxy.provider.ns</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<property>
<name>dfs.ha.fencing.methods</name>
<value>sshfence</value>
</property>
<!--使用隔离机制时需要ssh免密登录-->
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/root/.ssh/id_rsa</value>
</property>
d).修改slaves
[root@hadoop5 hadoop]# cat slaves
hadoop5
hadoop6
hadoop7
14.同步其他机器
scp -r hadoop root@hadoop6:/bigdata/hadoop-2.9.2/etc
scp -r hadoop root@hadoop7:/bigdata/hadoop-2.9.2/etc
15.启动hdfs集群
a).两个namenode中任意节点执行如下命令
hdfs zkfc -formatZK
b).启动journalNode节点
hadoop5: hadoop-daemon.sh start journalnode
hadoop6: hadoop-daemon.sh start journalnode
hadoop7: hadoop-daemon.sh start journalnode
c).在选中的active节点namenode上执行namenode的格式化
hadoop5: hdfs namenode -format ns
d).在active上启动hdfs 集群
start-dfs.sh
e).在standby的namenNode上执行如下命令
hdfs namenode -bootstrapStandby
f).启动stabdby的namenode
hadoop-daemon.sh start namenode
搭建 yarn 集群 高可用
集群规划
192.168.25.34 hadoop5 nodemanager
192.168.25.35 hadoop6 resourcemanager & nodemanager
192.168.25.36 hadoop7 resourcemanager & nodemanager
1.配置 mapred-site.xml
需要先启动hdfs
复制 mapred-sit.xml.template mapred-sit.xml
vi mapred-sit.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
2.配置 yarn-site.xml
<!--开启rm高可用-->
<property>
<name>yarn.resourcemanager.ha.enable</name>
<value>true</value>
</property>
<!--指定RM的cluster-id-->
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>yrc</value>
</property>
<!--指定RM的名字-->
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<!--分别指定RM的地址-->
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>hadoop6</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>hadoop7</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address.rm1</name>
<value>hadoop6:8088</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address.rm2</name>
<value>hadoop7:8088</value>
</property>
<!--指定zk集群地址-->
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>hadoop5:3001,hadoop6:4001,hadoop7:5001</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
#单机yarn yarn-site.xml配置#
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop</value>
</property>
同步其他机器
scp mapred-site.xml root@hadoop6:/bigdata/hadoop-2.9.2/etc/hadoop/mapred-site.xml
scp mapred-site.xml root@hadoop7:/bigdata/hadoop-2.9.2/etc/hadoop/mapred-site.xml
scp yarn-site.xml root@hadoop6:/bigdata/hadoop-2.9.2/etc/hadoop/yarn-site.xml
scp yarn-site.xml root@hadoop7:/bigdata/hadoop-2.9.2/etc/hadoop/yarn-site.xml
3.启动yarn
必须在yarn配置中指定的那台机器上( resourcemanager) 上启动
start-yarn.sh
4.mapreduce的web监控页面
http://192.168.25.135:8088
*****启动集群的顺序
1.启动每台zk
zkServer.sh start /bigdata/zookeeper-3.4.12/zkdata/zoo.cfg
2.查看状态
zkServer.sh status /bigdata/zookeeper-3.4.12/zkdata/zoo.cfg
zkServer.sh stop /bigdata/zookeeper-3.4.12/zkdata/zoo.cfg
3.每台机器启动journalnode
hadoop-daemon.sh start journalnode
4.任意节点启动 hdfs
start-dfs.sh
5.namenode的standby 节点启动 standby namenode
hadoop-daemon.sh start namenode
6.在active resourcemanager 上启动 yarn
start-yarn.sh
7.在standby resourcemanager 上启动 standby yarn
yarn-daemon.sh start resourcemanager
HIVE 安装
hive 独立安装
1.mysql 安装
删除系统自带mariadb,mysqldb
yum -y remove mariadb-libs-1:5.5.64-1.el7.x86_64
安装服务端
rpm -ivh MySQL-server-5.6.24-1.el6.x86_64.rpm
获取临时密码 cat /root/.mysql_secret
A6ZYPbPre0Ponlyw
启动
service mysql status
service mysql start
安装客户端
rpm -ivh MySQL-client-5.6.24-1.el6.x86_64.rpm
连接
mysql -uroot -pA6ZYPbPre0Ponlyw
进入交互界面
SET PASSWORD =password('tarena');
select Host,User,Password from user;
update user set Password=password('tarena');
set password for 'root'@hadoop8 = password('tarena');
flush privileges;
远程连接
grant all privileges on . to ‘root’@’%’ identified by ‘tarena’;
远程连接mysql
mysql -uroot -ptarena -h hadoop1 -P 3306
解压HIVE
配置conf/hive-env.sh
HADOOP_HOME=/bigdata/hadoop-2.9.2
export HIVE_CONF_DIR=/bigdata/hive-2.3.6-bin/conf
配置 hive-site.xml
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://hadoop8:3306/hive?createDatabaseIfNotExist=true&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>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>tarena</value>
</property>
配置hive-log4j.properties
property.hive.log.dir = /bigdata/hive-2.3.6-bin/log
mysql驱动jar包 拷贝至 hive-2.3.6/lib 目录
更改驱动配置信息,需要初始化
schematool -initSchema -dbType mysql
在hdfs集群创建hive使用的目录
hdfs dfs -mkdir -p /user/hive/warehouse
hdfs dfs -chmod -R 777 /user/hive/warehouse
hdfs dfs -mkdir -p /tmp/hive
hdfs dfs -chmod -R 777 /tmp/hive
环境变量配合
vi /etc/profile
export HIVE_HOME=/bigdata/hive-2.3.6-bin
export PATH=$PATH:$HIVE_HOME/bin
启动hive
hive
配置hwi
需要配置hdfs-site.xml
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
需要配置hadoop core-site.xml
<property>
<name>hadoop.proxyuser.hadoop.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.hadoop.groups</name>
<value>*</value>
</property>
hive --service hwi
jar cvfM hive-hwi-2.3.6.war -C hive-webapps ./
这是临时添加的函数
自定义UDF
依赖jar包 hive-exec-*.jar
继承UDF
方法名:evaluate —固定的方法名
show function
在hive中加载自定义函数
1.导出jar包
2.上传服务器
3.加载jar包
在进入hive 交互界面 操作
add jar /bigdata/UDF.jar;
创建函数
create temporary function myfunc as “com.udf.test.FirstUDF”;
配置文件中可以加载自定义函数–临时的
<property>
<name>hive.aux.jars.path</name>
<value>{path}</value>
</property>
初始化文件加载 自定义函数
启动hive时指定初始化文件,在文件中添加jar包,创建函数
vi init.hive
add jar /bigdata/UDF.jar;
create temporary function myfunc as “com.udf.test.FirstUDF”;
启动hvie
hive -i init.hive
安装sqoop
解压
配置环境
配置文件 sqoop-env.sh conf目录下。
export HADOOP_COMMON_HOME=/bigdata/hadoop-2.9.2
export HADOOP_MAPRED_HOME=/bigdata/hadoop-2.9.2
export HIVE_HOME=/bigdata/hive-2.3.6-bin
配置文件 configure-sqoop bin目录下
注释未安装的组件的环境检查信息 135行左右
依赖jar包
hadoop-common.*.jar
cp /bigdata/hadoop-2.9.2/share/hadoop/common/hadoop-common-2.9.2.jar lib/
以及相应的数据库的驱动jar包
cp /bigdata/hive-2.3.6-bin/lib/mysql-connector-java-5.1.27-bin.jar lib/
测试
使用sqoop查询mysql 中 show databases
sqoop list-databases --connect jdbc:mysql://hadoop1:3306 --username root --password tarena
使用sqoop 导出数据
sqoop import --connect jdbc:mysql://hadoop1:3306/test --username root --password tarena --table tab_1 --split-by id --hive-import --hive-database user_test --hive-table tab_2 --target-dir /input/sqoop --delete-target-dir
导出报错 Could not load org.apache.hadoop.hive.conf.HiveConf
添加环境变量
export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HIVE_HOME/lib/*
需要复制
cp /bigdata/hive-2.3.6-bin/conf/hive-site.xml /bigdata/sqoop/conf/
导出报错 Retrying connect to server: 0.0.0.0/0.0.0.0:10020.
启动历史作业 jobhistory
在hadoop的mapred.site.xml文件中添加以下配置
<property>
<name>mapreduce.jobhistory.address</name>
<value>0.0.0.0:10020</value>
</property>
接着在hadoop的sbin目录下启动
sbin/mr-jobhistory-daemon.sh start historyserver