大数据集群环境部署(Hadoop-3.3.1 + Hive-3.1.2 + HBase-2.4.4)

大数据集群环境部署

Hadoop
# 安装解压,移动到/usr/local/src/

export HADOOP_HOME=/usr/local/src/hadoop-3.3.1
export JAVA_HOME=/usr/local/src/jdk1.8.0_211
export export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$JAVA_HOME/bin:$PATH

# 使用source命令让立即生效
source /etc/profile

# 测试是否安装成功
hadoop version

# 本次测试所用软件及环境
1、CentOS-7
2、VMware-15
3、Jdk-1.8
4、Mysql-5.7
5、Hadoop-3.3.1
6、Hive-3.1.2
7、HBase-2.4.4
8、Zookeeper-3.4.10
1、下载Hadoop
2、安装3个虚拟机实现ssh面密码登陆
2.1 安装3个虚拟机
# 使用的Linux系统是Centos7,安装三个机器(我们操作时使用root用户)
#用ifconfig命令查看3台机器的ip
# 如果没有ifconfig命令可以使用ip addr命令


#  设置机器名称

为了方便使用,必须正确设置机器名称和ip对应,使用 hostname 命令,查看机器名称

观察是不是自己想要设置的机器名称,如果不是则使用 hostname (你的机器名)

例应为: hostname gm.com

再使用hostname命令,观察是否更改

类似的,更改其他两台机器gm.com-1和gm.com-2

# 配置/etc/hosts文件

修改3台机器的/etc/hosts文件,向文件中添加以下内容

192.168.1.85 gm.com
192.168.5.93 gm.com-1
192.168.5.94 gm.com-2
IP号为自己机器名对应的IP

# 给三台机器生成密钥文件
使用命令 ssh-keygen  -t   rsa   -P  ''
回车至生成文件

因为是root用户,密钥文件保存到了/root/.ssh/目录下,可以使用命令查看:

ls /root/.ssh/

该目录下生成两个文件文件 id_rsa 和 id_rsa.pub

# 在gm.com上创建authorized_keys文件
接下来将3台机器的/root/.ssh/目录下都存入一个相同文件,文件名authorized_keys,内容为刚刚生成的密钥。

使用命令 touch  /root/.ssh/authorized_keys 生成文件
使用命令 ls /root/.ssh/ 查看是否生成文件
使用命令 vi authorized_keys 并将三个主机中的/root/.ssh/id_rsa.pub内容复制ji进去
我的 authorized_keys文件显示为三个主机/root/.ssh/id_rsa.pub的内容
最后保存后,将gm.com中的authorized_keys文件复制到gm.com-1,gm.com-2
可以使用 xftp 工具

# 在gm.com上进行测试
输入命令 ssh gm.com-1 
键入 y 后,显示如下内容则证明ssh成功
输入命令 exit 退出 ssh 远程连接
再键入 ssh gm.com-2
最后在gm.com-1、gm.com-2上进行同样的测试,保证三台机器之间可以免密登陆

# 安装Java和Hadoop
1 安装jdk

2 安装hadoop

在opt下新建hadoop文件,并将hadoop-3.3.1.tar.gz放入

进入该目录 cd /opt/hadoop

解压该文件 tar -zxvf  hadoop-3.3.1.tar.gz
移动至 mv hadoop-3.3.1 /usr/local/src/

注:三台机器都需要进行上述操作 *** 重点



# 3 修改etc/hadoop中的配置文件
注:除了个别提示,其余文件只用修改gm.com中的即可

# 3.1 修改core-site.xml

文件最后  替换为


        
  fs.defaultFS
 
  hdfs://gm.com:9000
 
 
  hadoop.tmp.dir
    
  /usr/local/src/hadoop-3.3.1/data/tmp
 

# 3.2 修改hadoop-env.sh
将export   JAVA_HOME=${JAVA_HOME}

         修改为:

export   JAVA_HOME= 你jdk的安装路径

# 以下为我的设置 
# 该文件的配置需要三台机器都配置

# 3.3 修改hdfs-site.xml
# 文件最后  替换为


  dfs.namenode.http-address
 
  gm.com:50070
 
 
  dfs.namenode.name.dir
  /hadoop/name
 
 
  dfs.replication
   
  2
 
 
  dfs.datanode.data.dir
  /hadoop/data
 
 
# 3.4 修改mapred-site.xml
文件最后  替换为



  mapreduce.framework.name
  yarn
 


# 3.5 修改 workers
全部删除后加入之前设置的主机名或者ip

gm.com
gm.com-1
gm.com-2

# 3.6 修改yarn-site.xml文件
文件最后  替换为



 
  yarn.resourcemanager.hostname

  gm.com
 
 
  yarn.nodemanager.aux-services
  mapreduce_shuffle
 
 
  yarn.nodemanager.aux-services.mapreduce.shuffle.class
  org.apache.hadoop.mapred.ShuffleHandler
 

    yarn.nodemanager.resource.cpu-vcores

    1
 
 


# 启动Hadoop
1 在namenode上初始化
因为gm.com是namenode,gm.com-1和gm.com-2都是datanode,所以只需要对gm.com进行初始化操作,也就是对hdfs进行格式化。

在gm.com中进入 /usr/local/src/hadoop-3.3.1/bin 执行 cd   /usr/local/src/hadoop-3.3.1/bin

 执行初始化脚本,也就是执行命令:./hdfs namenode  -format

等待一会后,不报错返回 “Exiting with status 0” 为成功,“Exiting with status 1”为失败

2 在namenode上执行启动命令
进入gm.com中的/usr/local/src/hadoop-3.3.1/sbin 执行cd    /usr/local/src/hadoop-3.3.1/sbin

直接执行./start-all.sh 观察是否报错,如报错执行一下内容

$ vim sbin/start-dfs.sh
$ vim sbin/stop-dfs.sh

在空白位置加入

HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

 

$ vim sbin/start-yarn.sh 
$ vim sbin/stop-yarn.sh 

在空白位置加入
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

 

$ vim start-all.sh

$ vim stop-all.sh

TANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

配置完毕后执行./start-all.sh

3 查看Hadoop进程
输入命令 jps
如果出现6个进程则为配置正确

输入http://192.168.1.85:50070 则可以看到

 

hdfs dfsadmin -safemode leave;    //退出安全模式

hdfs dfsadmin -safemode get;    //查看安全模式状态
 
hdfs dfsadmin -safemode forceExit;   //强制退出安全模式


Java
# 因为Hadoop是用Java语言编写的,所以计算机上需要安装Java环境,我在这使用JDK 1.8.0_211(推荐使用Sun JDK)

# 配置JAVA环境变量,在当前用户根目录下的/etc/profile文件最下面加入以下内容:
export JAVA_HOME=/usr/local/src/jdk1.8.0_211
export PATH=$JAVA_HOME/bin:$PATH

# 使用source命令让立即生效
source /etc/profile

# 测试是否安装成功
java -version
Hive 3.1.2安装(基于Centos7.x和Hadoop3.3.1)
https://mirrors.tuna.tsinghua.edu.cn/apache/hbase/stable/
背景
Hadoop大数据套件被应用后,进行数据处理就必须编写mapreduce代码。而相当一部分大数据处理需求都是进行数据的查询操作(实际数据库的操作中,读写操作比例也有80%:20%的说法)
Facebook的工程师也遇到这个问题。编写mapreduce对于程序员还是有一定门槛,但是会使用sql的人群更庞大。所以Facebook就发明了Hive,一个把sql语句转换为mapreduce代码的转换器。
不过Hive的使用场景,还是会有一些限制。既然是sql语句,则Hive转换的mapreduce所需要处理的数据就需要有结构跟数据库数据一样。同时Hive将sql转换为mapreduce代码是通过类似模板的操作
注意,Hive只是把Sql语句转换为mapreduce代码,也就是一个转换器。所以一般不需要安装集群,安装在一个节点即可。如果担心损坏,一般安装2台,切换者使用也可。
1. 安装环境
Centos7.x 安装教程
Hadoop 3.3.1
yarn安装教程
hdfs安装教程
mysql5.7mysql安装教程
hive 3.1.2
mysql 驱动(mysql-connector-java-5.1.43.jar, 可以去maven或者其他仓库获取)
2. 安装步骤
正常启动HDFS和YARN
在hadoop安装目录的sbin下,有一个start-all.sh脚本,当hdfs和yarn的配置都设置好之后,可以一键启动hdfs和yarn
如果不想使用这个一键启动脚本,也可以分别调用start-dfs.sh和start-yarn.sh2个脚本



安装mysql
查看mysql是否运行
netstat -nltp | grep 3306
tcp 0 0 0.0.0.0:3306
systemctl start mysqld 启动mysql服务
配置mysql的开机自启服务 systemctl enable mysqld
开启远程连接权限
登录mysql:
mysql -uroot -proot
执行sql语句:
mysql> set global validate_password_policy=0;
mysql> set global validate_password_length=1; 这个两个设置以后 密码很简单不会报错
开启远程连接权限:
mysql > grant all privileges on . to ‘root’@’%’ identified by ‘123456’ with grant option;
mysql > flush privileges;
mysql启动正常 开启远程连接
可以使用windows安装的navicat连接linux上的mysql服务器验证以下


上传hive的安装包
使用rz软件,或者其他方式如secureCRT的alt+p切换到上传模式,将压缩包上传到第三方软件安装目录下。linux一般第三方软件安装在opt或者usr目录下。我的是安装到/opt/apps目录下
在软件包所在目录下,执行解压缩的shell指令
tar -zxf apache-hive-3.1.2-bin.tar.gz

修改配置信息
在Hive的安装目录下,找到conf目录,我的目录路径如下opt/apps/hive-3.1.2/conf。将原本的脚本重命名.
cp hive-env.sh.template  hive-env.sh

编辑hive-env.sh脚本,添加内容。使用vi命令打开文件
 vi hive-env.sh
修改hive-env.sh
因为 Hive 使用了 Hadoop, 需要在 hive-env.sh 文件中指定 Hadoop 安装路径:
文本中,添加内容如下。第一行是指定hadoop的安装路径,第二行是指定Hive安装目录下的conf目录的路径。
export HADOOP_HOME=/opt/apps/hadoop-3.2.1/
export HIVE_CONF_DIR=/opt/apps/hive-3.1.2/conf/

在运行hive之前,必须创建两个路径/tmp和/user/hive/warehouse后,这样才能在hive中创建库和表
$HADOOP_HOME/bin/hadoop fs -mkdir       /tmp
$HADOOP_HOME/bin/hadoop fs -mkdir -p    /user/hive/warehouse
$HADOOP_HOME/bin/hadoop fs -chmod g+w   /tmp
$HADOOP_HOME/bin/hadoop fs -chmod g+w   /user/hive/warehouse


创建一个配置文件(在conf目录下)

执行如下shell命令
vi  hive-site.xml

将以下内容拷贝到这个新创建的xml文件中,注意替换javax.jdo.option.ConnectionURL值的mysql所在主机域名,注意替换mysql的账号和用户名。



javax.jdo.option.ConnectionURL
jdbc:mysql://doit01:3306/hive?createDatabaseIfNotExist=true&useSSL=false




javax.jdo.option.ConnectionDriverName
com.mysql.jdbc.Driver




javax.jdo.option.ConnectionUserName
root


javax.jdo.option.ConnectionPassword
123456



hive.metastore.warehouse.dir
/user/hive/warehouse



hive.exec.scratchdir
/user/hive/tmp




hive.querylog.location
/user/hive/log




hive.metastore.uris
thrift://gm.com:9083



 
hive.server2.thrift.port 
10000

 
hive.server2.thrift.bind.host 
0.0.0.0


hive.server2.webui.host
0.0.0.0




hive.server2.webui.port
10002


 
hive.server2.long.polling.timeout 
5000                               



hive.server2.enable.doAs
true



datanucleus.autoCreateSchema
false



datanucleus.fixedDatastore
true



hive.execution.engine
mr




编辑Hadoop安装目录中,配置文件中的core-site.xml文件,我的路径如下/opt/apps/hadoop-3.3.1/etc/hadoop/core-site.xml
执行以下shell命令,使用vi打开这个文件(如果喜欢vim,也可以使用yum 安装vim软件,比vi更强大,可配置更多功能)
vi /opt/apps/hadoop-3.3.1/etc/hadoop/core-site.xml 

打开后,在中添加以下三条配置信息,这些是关于hdfs的访问权限配置信息。

dfs.permissions.enabled
false



hadoop.proxyuser.root.hosts
*



hadoop.proxyuser.root.groups
*


拷贝一个mysql的jdbc驱动jar包到hive的lib目录中
将上面提到的mysql的驱动jar包,拷贝到Hive安装目录的lib目录下

重启Hadoop的hdfs和yarn
cd到Hadoop安装目录下的sbin目录,有一键停止hdfs和yarn的脚本

执行以下shell脚本
 stop-all.sh 
 start-all.sh
补充,实际一键启动和停止脚本本身内容就是分别调用了单独启动hdfs和yarn的脚本


解决hadoop3.3.1和hive3.1.2的冲突问题
先把hive的lib目录下的guava-19.jar删除或者加一个后缀名如.bak
rm -rf  xxx 这是删除指令
mv xxx xxx.bak这是修改文件名指令(在jar包文件后加.bak后缀,就可以让系统不再认为这是一个jar包,和删除一样的效果)

再从Hadoop的安装目录下拷贝更高版本的guava的jar包到hive的lib目录下,具体路径如下
hdfs下的guava所在路径:/opt/apps/hadoop-3.3.1/share/hadoop/common/lib/guava-27.0-jre.jar
hive中放置guava jar包路径: /opt/apps/hive-3.1.2/lib/
cp  /opt/apps/hadoop-3.2.1/share/hadoop/common/lib/guava-27.0-jre.jar  /opt/apps/hive-3.1.2/lib/

启动元数据服务(暂时不要执行这条指令,否则会报错)  hive --service metastore
后期运行可后台启动,防止窗口关闭,元数据服务关闭 nohup hive --service metastore &

本身Hadoop 3.3.1可以和Hive3.1.2完美兼容,但是Hadoop3.3.1和Hive3.1.2就不是很兼容,需要解决jar包冲突,这里执行这个指令,会报错。如果执行了,请忽略,继续执行下面的步骤。

初始化hive的元数据库
在Hive的bin目录下,执行以下shell指令。如果细心可以使用ll -a,会发现schematool 是一个可执行文件,文件读写执行的三个权限,最后一个权限是x,可执行。
./schematool -initSchema -dbType  mysql

这时候,在mysql数据库中,多出一个hive数据库 ,这是记录元数据信息的
这时候,在HDFS中的目录中, 根目录下有一个user目录,路径:/user/hive
在linux中配置hive的环境变量
linux的环境变量都是在/etc/profile文件中,注意linux的环境变量分割符号是冒号: windows操作系统环境变量分隔符是分号;
执行以下shell命令

打开配置文件
vi /etc/profile

在文件中添加环境变量
export  HIVE_HOME=/opt/apps/hive-3.1.2

让配置文件生效
source /etc/profile

启动hive
在Hive的bin目录下,或者任务路径下,输入 hive 这个指令,就可以启动Hive
出现如下效果,说明安装成功

输入以下sql语句,进行功能验证
show databases;
create database db_doit;
create table if not exists tb_user (id int , name string) ; 
show tables ;


# 修改版本编号
select * from VERSION;
update VERSION set VERSION_COMMENT='3.1.2' where  VER_ID=1;
update VERSION set SCHEMA_VERSION='3.1.2' where  VER_ID=1;
HBase
# 安装路径
wget https://mirrors.cnnic.cn/apache/hbase/2.4.4/hbase-2.4.4-bin.tar.gz

1. 安装环境
Centos 7.x 
Jdk 1.8
ZK 3.4.4
Hadoop 3.3.1

下载完成后,解压后移至/usr/local/src/
tar -zxvf hbase-2.4.4-bin.tar.gz
mv hbase-2.4.4 /usr/local/src/


scp -r zookeeper-3.4.10/ [email protected]:/usr/local/src
配置环境变量
# vim /etc profile 
# 文件中追加以下内容  
export HBASE_HOME=/home/hbase-2.4.4
export PATH=$HBASE_HOME/bin:$PATH

# 保存退出,然后source /etc/profile刷新以下环境变量
修改配置文件
cd /usr/local/src/hbase-2.4.4/conf
vi hbase-env.sh

# 加入如下配置
export JAVA_HOME=/usr/local/src/jdk1.8.0_211/
export HBASE_LOG_DIR=/usr/local/src/hbase-2.4.4/logs
export HBASE_MANAGES_ZK=false  # 关闭HBase自动单机版ZK
vi hbase-site.xml

#加入如下配置



  hbase.rootdir
  hdfs://192.168.1.85:9000/hbase
  指定Region服务器共享的目录,用来持久存储HBase的数据,URL必须完全正确,其中包含了文件系统的schema。默认值"${hbase.tmp.dir}/hbase"
 
 

  
    hbase.cluster.distributed
    true
  
  
  
    hbase.tmp.dir
    ./tmp
  
  
    hbase.unsafe.stream.capability.enforce
    false
  
  
    hbase.wal.provider
    filesystem
  






 
   hbase.zookeeper.quorum
   gm.com:2181,gm.com-1:2181,gm.com-2:2181
   配置zookeeper集群地址,不要指定znode路径,HBase会默认将元数据放在根znode
 
 

    hbase.master.maxclockskew
    120000


 
   hbase.zookeeper.property.dataDir
   /usr/local/src/zookeeper-3.4.10/data
 
	
 
    
      hbase.master.info.bindAddress
      192.168.1.85
      HBase Master 的 Web UI绑定的地址,默认值为"0.0.0.0"
    

    
      hbase.master.port
      60000
      HBase Master绑定端口,默认值为:"60000"
    

    
       hbase.master.info.port
       16010
       HBase Master的Web UI端口,默认值为:"16010",如果不想启动UI实例,则可以将当前参数设置为-1
    

       
     
        hbase.regionserver.port
        16020
        HBase RegionServer绑定的端口,默认值为:"16020".
     

     
        hbase.regionserver.info.port
        16030
        HBase RegionServer的Web UI端口,默认值为:"16030"设置为-1可以禁用HBase RegionServer的Web UI。
        

     
         hbase.regionserver.info.bindAddress
         0.0.0.0
         HBase RegionServer的Web UI地址,默认值为"0.0.0.0"
      


vi regionservers

#加入各节点名称
gm.com
gm.com-1
gm.com-2
# hbase shell 进入shell脚本界面,操作数据库

问题:

1、若报错显示未找到slf4j,请如下操作

http://www.java2s.com/Code/Jar/s/Downloadslf4jnop172jar.htm
slf4j-nop-1.7.2.jar下载地址

2、hadoop配置文件中core-site.xml 与 hbase-site.xml中服务ip名称地址务必一致

查看集群安全模式状态

hdfs dfsadmin -safemode get
# 如果返回Safe mode is OFF 就说明没问题
# 如果返回Safe mode is ON 就说明集群正处于安全模式(强制退出即可)
hdfs dfsadmin -safemode leave

# 如果返回其他就说明集群出问题了 例如 返回如下内容
safemode: Call From hadoop01/192.168.100.100 to hadoop01:8020 failed on connection exception: java.net.ConnectException: 拒绝连接; For more details see:  http://wiki.apache.org/hadoop/ConnectionRefused

检查之后发现是namenode掉了,重启了一下集群.

建议执行完上述的操作之后重启hbase

你可能感兴趣的:(大数据,hadoop,hive,big,data,hdfs,数据库)