centos7.x 上搭建 高可用hadoop集群 随缘笔记

三台hdfs集群
三台zookeeper集群
1.集群规划

192.168.25.34 hadoop5 zknode1
192.168.25.35 hadoop6 zknode2
192.168.25.36 hadoop7 zknode3

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

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&amp;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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值