当前位置:   article > 正文

大数据平台搭建:Hadoop-3.x + Spark-2.x + Hive-2.x + Hbase-1.4 + Phoenix-4.14 + Cassandra + ES_hadoop3.x搭建hive on spark

hadoop3.x搭建hive on spark

换了新笔记本,做个笔记。

一,软件准备(自取所需)

Java-1.8

Scala-2.11

Hadoop-3.1.1

Spark-2.3.2

Hive-2.3.4

phoenix

二,SSH免密码登录

(即使是当地的单机也需要SSH,否则格式化的hadoop的存储系统时无权限,导致失败

:本地主机:@localhost:权限被拒绝(公钥,密码)开始)

 

ssh免密两步骤(在客户端下依次执行,所有选项按回车即可)

(1)生成密钥: $ ssh-keygen -t rsa -P ''   # 注意: '' 是两个英文单引号

命令执行后, 会在当前用户目录新建.ssh目录并生成两个文件:私钥 id_rsa 和公钥 id_rsa.pub

Ps:可能导致ssh免密不生效的命令$ ssh-keygen -t dsa -f ~/.ssh/id_dsa

(2)复制登录认证的公钥:$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

PS: 远程免密登录时只需要把id_rsa.pub追加到远程登录机器的~/.ssh/authorized_keys文件中, 没有的话新建一个即可

 

尝试连接(第一次可能需要输入密码):

:〜$ ssh localhost

Ps:如果配了ssh免密,登入时还需要输入密码,需要需改.ssh文件夹访问权限,分配权限为登陆用户

  1. chmod 700 /home/raini/.ssh
  2. chmod 600 /home/raini/.ssh/*
  3. chown raini: /home/raini/.ssh
  4. chown raini: /home/raini/.ssh/*

 

三,安装Java和Scala

1.分别解压Java和Scala到自己想存放的目录

2.配置环境变量

raini @ biyuzhe:〜$ gedit .bashrc   (在末尾加入)

  1. ## java
  2. export JAVA_HOME=/home/raini/app/jdk
  3. export JRE_HOME=${JAVA_HOME}/jre
  4. export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
  5. export PATH=${JAVA_HOME}/bin:$JRE_HOME/bin:$PATH
  6. ## scala
  7. export SCALA_HOME=/home/raini/app/scala
  8. export PATH=${SCALA_HOME}/bin:$PATH

3.执行$  source .bashrc   (应用更改)

4.验证

四,安装Hadoop

解压:tar -zxvf hadoop-3.1.1.tar.gz

2. raini @ biyuzhe:〜$ gedit .bashrc(在文件里追加)

  1. ## hadoop-3.x
  2. export HADOOP_HOME=/home/raini/app/hadoop
  3. export CLASSPATH=".:$JAVA_HOME/lib:$CLASSPATH"
  4. #
  5. export HADOOP_COMMON_HOME=$HADOOP_HOME 
  6. export HADOOP_HDFS_HOME=$HADOOP_HOME 
  7. export HADOOP_MAPRED_HOME=$HADOOP_HOME
  8. export HADOOP_YARN_HOME=$HADOOP_HOME 
  9. #
  10. export HADOOP_INSTALL=$HADOOP_HOME 
  11. export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native 
  12. export HADOOP_CONF_DIR=$HADOOP_HOME 
  13. export HADOOP_PREFIX=$HADOOP_HOME 
  14. export HADOOP_LIBEXEC_DIR=$HADOOP_HOME/libexec 
  15. export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native:$JAVA_LIBRARY_PATH 
  16. export HADOOP_CONF_DIR=$HADOOP_PREFIX/etc/hadoop
  17. #
  18. export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
  19. #export HDFS_DATANODE_USER=root
  20. #export HDFS_DATANODE_SECURE_USER=root
  21. #export HDFS_SECONDARYNAMENODE_USER=root
  22. #export HDFS_NAMENODE_USER=root

3. vi etc/hadoop/core-site.xml

  1. <configuration>
  2. <property>
  3. <name>fs.defaultFS</name>
  4. <value>hdfs://biyuzhe:9000</value>
  5. </property>
  6. <property>
  7. <name>hadoop.tmp.dir</name>
  8. <value>/home/raini/app/hadoop/data/tmp</value>
  9. </property>
  10. </configuration>

集群模式:

 

4. vi etc/hadoop/hdfs-site.xml

  1. <!-- 配置副本个数以及数据存放的路径 -->
  2. <configuration>
  3. <property>
  4. <name>dfs.replication</name>
  5. <value>1</value>
  6. </property>
  7. <property>
  8. <name>dfs.namenode.name.dir</name>
  9. <value>/abutionai/app/hadoop/data/hdfs/namenode</value>
  10. </property>
  11. <property>
  12. <name>dfs.namenode.data.dir</name>
  13. <value>/abutionai/app/hadoop/data/hdfs/datanode</value>
  14. </property>
  15. <!-- 为abutionDB的配置 -->
  16. <property>
  17. <name>dfs.support.append</name>
  18. <value>true</value>
  19. </property>
  20. <property>
  21. <name>dfs.datanode.synconclose</name>
  22. <value>true</value>
  23. </property>
  24. </configuration>

集群模式:

 

5. vi etc/hadoop/mapred-site.xml

集群模式(单机可选):

 

6. vi hadoop-env.sh

  1. export JAVA_HOME=/home/raini/app/jdk
  2. export HADOOP_HOME=/home/raini/app/hadoop
  3. # 默认情况下,Hadoop的生成大量调试日志。 为了制止这种行为,开头和结尾查找行的export HADOOP_OPTS并将其更改为:
  4. export HADOOP_OPTS="$HADOOP_OPTS -XX:-PrintWarnings -Djava.net.preferIPv4Stack=true"
  5. # pid文件
  6. export HADOOP_PID_DIR=/home/raini/app/tmp/pids

7. vi etc/hadoop/slaves

master.thutmose.cn

集群模式一行写一台从节点ip

 

8.格式化HDFS文件系统

$ bin/hdfs namenode -format

9.启动名称节点和数据节点守护进程

$ sbin/start-dfs.sh

10.jps查看进程

11.访问名称节点的网络服务

http://localhost:50070/ ,查看hadoop状况

 

问题解决:

(针对root用户报错)Attempting to operate on hdfs namenode as root

 

1、master,slave都需要修改start-dfs.sh,stop-dfs.sh,start-yarn.sh,stop-yarn.sh四个文件
2、如果你的Hadoop是另外启用其它用户来启动,记得将root改为对应用户

 

在/hadoop/sbin路径下:
将start-dfs.sh,stop-dfs.sh两个文件顶部添加以下参数

#!/usr/bin/env bash
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

还有,start-yarn.sh,stop-yarn.sh顶部也需添加以下:

#!/usr/bin/env bash
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

 

 

五,安装Spark

解压:tar -zxvf spark-2.3.2-bin-hadoop2.7.tgz

2. raini @ biyuzhe:〜$ gedit .bashrc(在文件里追加)

   顺便把pyspark也配置了

  1. ## spark
  2. export SPARK_HOME=/home/raini/app/spark
  3. export PATH=${SPARK_HOME}/bin:$PATH
  4. export PYSPARK_PYTHONPATH=${SPARK_HOME}/bin:${SPARK_HOME}/python:${SPARK_HOME}/python/lib/py4j-0.10.7-src.zip:$PATH
  5. # PYSPARK
  6. export PYSPARK_DRIVER_PYTHON=$ANACONDA_ROOT/bin/ipython notebook
  7. export PYSPARK_PYTHON=$ANACONDA_ROOT/envs/py35/bin/python
  8. export PYSPARK_DRIVER_PYTHON_OPTS="notebook"

3.更改配置

  1. 1. vim slaves (追加自己的主机名)
  2. ##localhost
  3. biyuzhe
  4. 2.vim spark-env.sh
  5. 追加:
  6. export JAVA_HOME=/home/raini/app/jdk
  7. export SCALA_HOME=/home/raini/app/scala
  8. export SPARK_WORKER_MEMORY=1G
  9. export HADOOP_HOME=/home/raini/app/hadoop
  10. export HADOOP_CONF_DIR=/home/raini/app/hadoop/etc/hadoop
  11. export SPARK_MASTER_HOST=biyuzhe
  12. export SPARK_PID_DIR=/home/raini/app/spark/data/pid
  13. export SPARK_LOCAL_DIRS=/home/raini/app/spark/data/spark_shuffle
  14. 3.vim spark-defaults.conf
  15. 追加:
  16. # Example:
  17. # spark.master spark://master:7077
  18. # spark.eventLog.enabled true
  19. # spark.eventLog.dir hdfs://namenode:8021/directory ## 但是hadoop配置的是9000
  20. # spark.serializer org.apache.spark.serializer.KryoSerializer
  21. # spark.driver.memory 5g
  22. # spark.executor.extraJavaOptions -XX:+PrintGCDetails -Dkey=value -Dnumbers="one two three"
  23. spark.master spark://biyuzhe:7077
  24. spark.eventLog.enabled true
  25. spark.eventLog.dir hdfs://biyuzhe:9000/eventLog
  26. spark.serializer org.apache.spark.serializer.KryoSerializer
  27. spark.driver.memory 1g
  28. # spark.executor.extraJavaOptions -XX:+PrintGCDetails -Dkey=value -Dnumbers="one two three"
  29. ## 安装mmlspark
  30. #spark.jars.packages Azure:mmlspark:0.12

raini @ biyuzhe:〜$ hadoop fs -mkdir /eventLog

4.启动Spark

$SPARK_HOME/sbin/start-all.sh

5.web监控

http://biyuzhe:8080/

(六)配置Pyspark环境

1.追加配置(基于anoconda envs)

  1. # added by Anaconda3 
  2. export ANACONDA_ROOT=/home/raini/app/anoconda3
  3. export PATH=${ANACONDA_ROOT}/bin:$PATH
  4. # pyspark
  5. export PYSPARK_DRIVER_PYTHON=$ANACONDA_ROOT/bin/ipython notebook
  6. export PYSPARK_PYTHON=$ANACONDA_ROOT/envs/py35/bin/python
  7. export PYSPARK_DRIVER_PYTHON_OPTS="notebook"

raini @ biyuzhe:〜$ source .bashrc

2.运行pyspark

raini @ biyuzhe:〜$ pyspark --packages Azure:mmlspark:0.14

自动跳转到的IPython的中,现在就可以编辑与运行代码了:

不使用的IPython的:

3.Pyspark设置指定的Python的版本

修改spark-env.sh文件,在末尾添加

export PYSPARK_PYTHON=/home/raini/app/anoconda3/envs/py35/bin/python

(完)

 

 

遇到的问题

1. Spark无法连接Hadoop异常:

错误SparkContext:91 - 初始化SparkContext时出错.java.net.ConnectException
:从biyuzhe / 127.0.1.1调用biyuzhe:8021连接异常失败: java.net.ConnectException:拒绝连接; 有关更多详细信息,请参阅:
    sun.reflect
    上的sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    中的sun.reflect.NativeConstructorAccessorImpl.newInstance0(本地方法)中的http://wiki.apache .org / hadoop / ConnectionRefused.DissatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    在java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    在org.apache.hadoop.net.NetUtils.wrapWithMessage(NetUtils.java) :792)
    在org.apache .hadoop。 net.NetUtils.wrapException(NetUtils.java:732)
    在org.apache.hadoop.ipc.Client.call(Client.java:1479)
    在org.apache .hadoop。 ipc.Client.call(Client.java:1412)...

方法1.修改配置的端口8021(火花的默认)成9000(HDFS的默认)

方法2(待验证)./ etc / hosts中不要有:: 1的段,屏蔽掉:

 

六,安装Hive

 

MySQL的安装

 

sudo apt install mysql-server

 

一、(仅对于新安装的执行这步,已有MySQL的跳过)

重置root用户密码:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('root');

或:

update mysql.user set authentication_string=PASSWORD('root'), plugin='mysql_native_password' where user='root';

 

给用户赋权:

grant all privileges on *.* to 'root'@'%' identified by 'root';

grant all privileges on *.* to 'root'@'localhost' identified by 'root';(与上相仿)

 

更新:

flush privileges;

 

二、

登录MySQL:

# mysql -u root -p

 

建立数据库hive:

mysql> create database hive;

mysql> show databases;

 

修改hive数据库的字符集为latin1:

mysql> alter database hive character set latin1;

 

创建hive用户,并授权:

 

mysql> create user 'hive'@'localhost' identified by 'hive';

mysql> grant select,insert,update,delete,alter,create,index,references on metastore.* to 'hive'@'localhost';

或者:mysql>grant all privileges on *.* to 'hive'@'node1' identified by 'hive' with grant option;

注意:@后面改成你的hostname

 

更新:

mysql>flush privileges;

 

三、使用新用户登录并设置密码

$ mysql [-h master] -uhive -p (回车再回车)

mysql> SET PASSWORD FOR hive@localhost = PASSWORD('hive');

查询的MySQL的版本:

mysql>select version(); //5.7.24-0ubuntu0.18.04.1

 

下载MySQL的JDBC的驱动包:

http://dev.mysql.com/downloads/connector/j/

选择独立平台,下载mysql-connector-java-8.0.13.zip,复制msyql的JDBC驱动包到蜂巢的LIB目录下。

 

Hive安装配置

 

在.bashrc中添加如下:

#Hive

export HIVE_HOME = /home/raini/app/hive

export PATH = $ PATH:${HIVE_HOME}/bin

export CLASSPATH = $CLASSPATH.:{HIVE_HOME}/lib

 

配置hive-env.sh文件:

HADOOP_HOME = /home/raini/app/hadoop

export HIVE_CONF_DIR = /home/raini/app/hive/conf

#export HADOOP_HEAPSIZE = 512

#导入第三方lib包,参考(https://blog.csdn.net/qianshangding0708/article/details/50381966)

#export HIVE_AUX_JARS_PATH = /home/raini/app/hive/../.jar(绝对路径,多个用分隔

PS :(不配置该变量,仅需要将所需 jar放入新建目录 $ {HIVE_HOME}/auxlib下即可)

(可选配置):

HADOOP_HOME=/usr/local/Cellar/hadoop/3.1.1/libexec
export HIVE_CONF_DIR=/Users/zhengsiming/app/hive/conf
#export HADOOP_HEAPSIZE = 512
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_201.jdk/Contents/Home
export HADOOP_HOME=/usr/local/Cellar/hadoop/3.1.1/libexec
export HIVE_HOME=/Users/zhengsiming/app/hive

 

- 配置Hive的site.xml文件

(创建Hive-site.xml中所需文件夹):

raini @ biyuzhe:〜$ hadoop fs -mkdir -p /user/hive/tmp

raini @ biyuzhe:〜$ hadoop fs -mkdir -p /user/hive/log

raini @ biyuzhe:〜$ hadoop fs -mkdir -p /user/hive/warehouse

(需要给755权限):

raini @ biyuzhe:〜$ hadoop fs -chmod g + w /user/hive/tmp

raini @ biyuzhe:〜$ hadoop fs -chmod g + w /user/hive/log

raini @ biyuzhe:〜$ hadoop fs -chmod g + w /user/hive/warehouse

(一步到位):

  1. hdfs dfs -mkdir -p /user/hive/warehouse
  2. hdfs dfs -mkdir -p /user/hive/tmp
  3. hdfs dfs -mkdir -p /user/hive/log
  4. hdfs dfs -chmod -R 777 /user/hive/warehouse
  5. hadoop fs -chmod 777 /user/hive/tmp
  6. hdfs dfs -chmod -R 777 /user/hive/tmp
  7. hdfs dfs -chmod -R 777 /user/hive/log

(新建hive-site.xml文件):

  1. <?xml version="1.0" encoding="UTF-8" standalone="no"?>
  2. <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
  3. <configuration>
  4. <!--
  5. <property>
  6. <name>hive.metastore.local</name>
  7. <value>true</value>
  8. <description>使用本机mysql服务器存储元数据。这种存储方式需要在本地运行一个mysql服务器</description>
  9. </property>
  10. -->
  11. <property>
  12. <name>javax.jdo.option.ConnectionURL</name>
  13. <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value><!--不能用biyuzhe-->
  14. <description></description>
  15. </property>
  16. <property>
  17. <name>javax.jdo.option.ConnectionDriverName</name>
  18. <value>com.mysql.cj.jdbc.Driver</value>
  19. <description>MySQL-5.5之前 com.mysql.jdbc.Driver</description>
  20. </property>
  21. <property>
  22. <name>javax.jdo.option.ConnectionUserName</name>
  23. <value>hive</value>
  24. <description></description>
  25. </property>
  26. <property>
  27. <name>javax.jdo.option.ConnectionPassword</name>
  28. <value>hive</value>
  29. </property>
  30. <!--
  31. <property>
  32. <name>hive.metastore.uris</name>
  33. <value>thrift://localhost:9083</value>
  34. <description>uri1,uri2,...该参数Hive中metastore(元数据存储)采用remote方式,非Local方式。jdbc/odbcconnectionhive,ifmysqlmustset</description>
  35. </property>
  36. -->
  37. <property>
  38. <name>hive.metastore.warehouse.dir</name>
  39. <value>/user/hive/warehouse</value>
  40. <description>指定Hive的数据存储目录,默认位置在HDFS的/user/hive/warehouse路径下</description>
  41. </property>
  42. <property>
  43. <name>hive.exec.scratdir</name>
  44. <value>/user/hive/tmp</value>
  45. <description>hive的数据临时文件目录,默认位置为HDFS的/tmp/hive路径下</description>
  46. </property>
  47. <!--以下4个属性在default文件中都是通过${system:java.io.tmpdir}/${system:user.name}定义的,改成自己在hive目录下建的iotmp-->
  48. <property>
  49. <name>hive.querylog.location</name>
  50. <value>/home/raini/app/hive/logs</value>
  51. <description>这个是用于存放hive相关日志的目录,Location of Hive run time structured log file</description>
  52. </property>
  53. <property>
  54. <name>hive.server2.logging.operation.log.location</name>
  55. <value>/home/raini/app/hive/iotmp/operation_logs</value>
  56. <description>Top level directory where operation logs are stored if logging functionality is enabled</description>
  57. </property>
  58. <property>
  59. <name>hive.downloaded.resources.dir</name>
  60. <value>/home/raini/app/hive/iotmp/resource_dir</value>
  61. <description>Temporary local directory for added resources in the remote file system.</description>
  62. </property>
  63. <property>
  64. <name>hive.exec.local.scratchdir</name>
  65. <value>/home/raini/app/hive/iotmp/scratchdir</value>
  66. <description>Local scratch space for Hive jobs</description>
  67. </property>
  68. <property>
  69. <name>hive.cli.print.current.db</name>
  70. <value>true</value>
  71. </property>
  72. </configuration>

- (vim hive-log4j.proprties)和(vim hive-exec-log4j2.properties):

property.hive.log.dir =(/home/raini/app/app/hive/log

#当hive运行时,日志存储的地方,(上面hive已经配置过了,所以这步跳过)

 

- (第一次执行,初始化):

raini@biyuzhe:~$ schematool -dbType mysql -initSchema

 

--(启动hive服务):

raini@biyuzhe:~$ hive --service metastore &

raini@biyuzhe:~$ hive --service metastore > /tmp/hive_metastore.log 2>&1 &

 

--(启动hive):

raini@biyuzhe:~$ hive

Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.

Ps:(最新的mysql驱动用的驱动名称变了

所以改变jdbc.driverClassName= com.mysql.cj.jdbc.Driver

 

--(测试):

hive (default)> create table test(id int, name string) row format delimited FIELDS TERMINATED BY ',';

OK

Time taken: 3.162 seconds

 

多余的:若是分布式,scp -r hive-2.3/ raini@node2:/home/app/hive之后只需做一部就可设置node2节点为客户端节点(可以在node2终端打开hive)

    <!--
    <property>
        <name>hive.metastore.uris</name>
        <value>thrift://node2:9083</value>
       <description>把这个配置解开即可t</description>
    </property>
    -->

 

beeline连接hiveserver2

 

连接之前要先设置代理用户,可不输入用户名和密码直接回车进入。在hadoop的core-site.xml中,设置如下属性(proxyuser后面是运行hive的超级用户,raini是我的用户名):

  1. <property>
  2. <name>hadoop.proxyuser.raini.hosts</name>
  3. <value>*</value>
  4. </property>
  5. <property>
  6. <name>hadoop.proxyuser.raini.groups</name>
  7. <value>*</value>
  8. </property>

设置了以后, 无论使用什么用户登陆,都使用hive超级用户 (raini启动hiveserver2) 来代理, 使当前用户以raini的权限进行操作, 但所建立的表还是属于当前用户.

 

--(端口信息可以在hive-site.xml修改,默认的,可跳过):

  1. <property>
  2. <name>hive.server2.thrift.port</name>
  3. <value>10000</value>
  4. </property>
  5. <property>
  6. <name>hive.server2.thrift.bind.host</name>
  7. <value>localhost</value> <!-- 默认是localhost -->
  8. </property>

 

--(在一个窗口中启动hiveserver2:

或放置后台:raini@biyuzhe:~/app$ hive --service hiveserver2 &

此时后台多了一个RunJar

 

--(启动beeline):

beeline> !connect jdbc:hive2://localhost:10000

可以看到不输入用户名密码也可以进入,因为前面hdfs 上的文件夹/ tmp / hive /仓给给了权限,可777,也可755

 

Hbase安装

(也可以使用Hbase自带zookeeper)

zookeeper安装

只需配置conf/zoo.cfg即可

zoo.cfg(单机)

  1. # 最重要的5个 # 通常是tickTime=tickTime*initLimit  就是20000
  2. tickTime=2000
  3. initLimit=5
  4. syncLimit=2
  5. dataDir=/home/raini/app/zookeeper/dataDir 
  6. dataLogDir=/home/raini/app/zookeeper/dataLogDir
  7. clientPort=2181
  8. # the maximum number of client connections.
  9. # increase this if you need to handle more clients
  10. #maxClientCnxns=60
  11. #
  12. # Be sure to read the maintenance section of the 
  13. # administrator guide before turning on autopurge.
  14. #
  15. # http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
  16. #
  17. # The number of snapshots to retain in dataDir
  18. #autopurge.snapRetainCount=3
  19. # Purge task interval in hours
  20. # Set to "0" to disable auto purge feature
  21. #autopurge.purgeInterval=1

zoo.cfg(集群)

  1. # 最重要的5个 # 通常是tickTime=tickTime*initLimit  就是20000
  2. tickTime=2000
  3. initLimit=5
  4. syncLimit=2
  5. dataDir=/home/raini/app/zookeeper/dataDir 
  6. dataLogDir=/home/raini/app/zookeeper/dataLogDir
  7. # 先查看端口是否占用,或修改成12181
  8. clientPort=2181
  9. # 3台机器
  10. server.1=192.168.110.1:2888:3888
  11. server.2=192.168.110.2:2888:3888
  12. server.3=192.168.110.3:2888:3888
  13. #maxClientCnxns=60
  14. #autopurge.snapRetainCount=3
  15. #autopurge.purgeInterval=1

完成~ 发送到另外两台机器。

然后:

  1. node1data/myid配置如下:
  2. echo '1' > data/myid
  3. node2data/myid配置如下:
  4. echo '2' > data/myid
  5. node3data/myid配置如下:
  6. echo '3' > data/myid

分别启动:

zkServer.sh start > /home/app/zookeeper/zookeeper.out

查看状态:

zkServer.sh status

最后:

将zoo.cfg 复制到hbase/conf/下即可。

 

Ps: 若第一台zoo启动后没查看到进程,可以不管它,启动完后面的机器它会自己起来的。

 

Hbase-env.sh

## 追加:
export JAVA_HOME=/home/raini/app/jdk
export HBASE_CLASSPATH=/home/raini/app/hbase/conf/
export HBASE_PID_DIR=/home/raini/app/tmp/pids
#使用HBase自带的zookeeper(单机环境)
export HBASE_MANAGES_ZK=true
 

#不使用HBase自带的zookeeper(集群环境)
export HBASE_MANAGES_ZK=false

 

hbase-site.xml

(单机环境):

  1. <configuration>
  2. <property>
  3. <name>hbase.rootdir</name>
  4. <value>hdfs://biyuzhe:9000/hbase</value>
  5. </property>
  6. <property>
  7. <name>hbase.cluster.distributed</name>
  8. <value>true</value>
  9. </property>
  10. <property>
  11. <name>hbase.zookeeper.quorum</name>
  12. <value>127.0.0.1</value>
  13. </property>
  14. <property>
  15. <name>hbase.zookeeper.property.clientPort</name>
  16. <value>2181</value>
  17. </property>
  18. <property>
  19. <name>zookeeper.znode.parent</name>
  20. <value>/hbase</value>
  21. </property>
  22. <property>
  23. <name>hbase.zookeeper.property.dataDir</name>
  24. <value>/home/raini/app/tmp/hbase_zoo_dataDir</value>
  25. </property>
  26. <!-- <property>
  27. <name>hbase.tmp.dir</name>
  28. <value>/home/raini/app/tmp/hbase/</value>
  29. </property>
  30. <property>
  31. <name>hbase.master</name>
  32. <value>biyuzhe:60000</value>
  33. </property>
  34. <property>
  35. <name>hbase.wal.provider</name>
  36. <value>file://home/raini/tmp/hbase-wal</value>
  37. </property>-->
  38. <property>
  39. <name>dfs.replication</name>
  40. <value>1</value>
  41. </property>
  42. <property>
  43. <name>hbase.master.maxclockskew</name>
  44. <value>150000</value>
  45. </property>
  46. <property>
  47. <name>zookeeper.session.timeout.ms</name>
  48. <value>150000</value>
  49. </property>
  50. </configuration>

(集群环境-3台):

注意:

hbase.zookeeper.property.clientPort 和 zookeeper.znode.parent 要配置好(方便以后配置janusGraph)

还有配置里使用的要么使用IP,不然全使用hostname,以免出现janusGraph(hbase-client)连接不上hbase-server

regionservers 

#修改为主机名   <----建议写与hostname不同的主机ip , 不需要写master-ip在里边,因为master作为Hmaster了

node2-ip

node3-ip

 

启动Hbase

在node1$ start-hbase.sh

 

     运行Hbase

$ hbase shell

 

HBase Shell 基本操作

  1. status –查看HBase状态
  2. hbase(main):001:0> status
  3. version –查看HBase版本信息
  4. hbase(main):002:0> version
  5. create tablename,columnname1,…,columnnameN –创建表
  6. hbase(main):013:0* create 'testtable','colfam1','colfam2','colfam3'
  7. describe tablename –描述表定义
  8. hbase(main):014:0> describe 'testtable'
  9. list –列出所有表
  10. hbase(main):015:0> list
  11. put tablename,rowname,columnname,value –插入数据
  12. hbase(main):019:0* put 'testtable','row1','colfam1','123'
  13. hbase(main):020:0> put 'testtable','row1','colfam1:col1','456'
  14. scan tablename –全表查询
  15. hbase(main):021:0> scan 'testtable'
  16. get tablename,rowname –查询表中行的数据
  17. hbase(main):022:0> get 'testtable','row1'
  18. count tablename –查询表中的记录数
  19. hbase(main):023:0> count 'testtable'
  20. delete tablename,rowname, columnname–删除一个CELL
  21. hbase(main):041:0> delete 'testtable','row1','colfam1:col1'
  22. disable & drop tablename –删除表
  23. hbase(main):043:0> disable 'testtable'
  24. hbase(main):042:0> drop 'testtable'
  25. exists tablename –判断表是否存在
  26. hbase(main):045:0> exists 'testtable'
  27. disable&alter tablename –删除表中一个列族
  28. hbase(main):008:0> describe 'testtable'
  29. truncate tablename –清空整张表
  30. hbase(main):005:0> truncate 'testtable'
  31. hbase(main):016:0* disable 'testtable'
  32. hbase(main):011:0> alter 'testtable',NAME=>'colfam1',METHOD=>'delete'
  33. hbase(main):012:0> describe 'testtable'
  34. hbase(main):018:0> enable 'testtable'
  35. deleteall tablename rowname –删除表中整行
  36. hbase(main):010:0> scan 'testtable'
  37. hbase(main):012:0> deleteall 'testtable','row1'

 

Phoenix安装配置

下载:http://mirror.bit.edu.cn/apache/phoenix/

官网:http://phoenix.apache.org/#

前提:Hadoop ,zookeeper,Hbase-1.4 都安装成功

解压:$ tar -zxvf ./apache-phoenix-4.14.1-HBase-1.4-bin.tar.gz

安装:Phoenix 仅安装在Master节点

配置:
  1、将 Phoenix 目录下的 phoenix-4.14.1-HBase-1.4-client.jar、phoenix-core-4.14.1-HBase-1.4.jar、phoenix-4.14.1-HBase-1.4-server.jar 拷贝到 hbase 集群各个节点 的安装目录 lib 里。

  2、将 hbase 配置文件 hbase-site.xml 拷贝到 Phoenix 的 bin 目录下,覆盖原有的配置文件。

  3、将 hdfs 配置文件 core-site.xml hdfs-site.xml 拷贝到 Phoenix 的 bin 目录下。

环境变量:

  1. #phoenix
  2. export PHOENIX_HOME=/home/raini/app/phoenix
  3. export PHOENIX_CLASSPATH=$PHOENIX_HOME
  4. export PATH=$PATH:$PHOENIX_HOME/bin

修改启动文件权限:

  Phoenix/bin/下 : chmod 777 psql.py和sqlline.py

启动:

  重启 hbase 集群,raini@biyuzhe:~/app/phoenix$ python2 ./bin/sqlline.py biyuzhe:2181

 

Cassandra的安装及配置

  • 安装jdk和python-2.7(建议直接安装anaconda2)
  • vi .bashrc
  1. # cassandra
  2. export CASSANDRA_HOME=/home/raini/app/cassandra
  3. export PATH=$CASSANDRA_HOME/bin:$PATH
  • 新建cassandra数据存放的文件夹(用安装包的方式就需要这一步)

可以根据磁盘情况设置这3个文件夹,但是要和cassandra.yaml里的想对应

  1. mkdir /home/raini/app/tmp/cassandra/data
  2. mkdir /home/raini/app/tmp/cassandra/commitlog
  3. mkdir /home/raini/app/tmp/cassandra/saved_caches
  4. mkdir /home/raini/app/tmp/cassandra/hints

tmp/cassandra/data           SSTable文件在磁盘中的存储位置,可以有多个地址

tmp/cassandra/commitlog     文件在磁盘中的存储位置.

tmp/cassandra/saved_caches  数据缓存文件在磁盘中的存储位置.保存表和行的缓存

tmp/cassandra/hints           存储提示目录

如果可能,可以考虑将tmp/cassandra/data和tmp/cassandra/commitlog设置在不同的磁盘中,这样有利于分散整体系统的磁盘I/O的压力.

  • 修改con/cassandra.yaml中的一些参数
  1. cluster_name: 'JanusGraphCassandraCluster'
  2. hints_directory: /cassandra/hints           #存储提示目录
  3. - seeds: "127.0.0.1"      #Cassandra集群中的种子节点地址,可以设置多个,用半角逗号隔开,必须是ip
  4. listen_address: localhost               #需要监听的IP或主机名。改成本机IP
  5. start_rpc: true                        #是否开始thrift rpc服务器,默认false
  6. rpc_address: localhost                #Cassandra服务器对外提供服务的地址  本机ip
  7. rpc_port: 9160                       #Cassandra服务器对外提供服务的端口号 9161

启动:

$ cassandra -f -R       #启动,-f表示前台启动,-R表示以管理员身份启动

$ cassandra >> /home/raini/app/cassandra/cassandra.out &    #后台启动

 

在某些本地化的环境中,如果得到如下错误

  1. expr: 语法错误
  2. expr: 语法错误
  3. bin/cassandra: 59: [: Illegal number:
  4. bin/cassandra: 63: [: Illegal number:
  5. bin/cassandra: 67: [: Illegal number:
  6. expr: 语法错误
  7. bin/cassandra: 81: [: Illegal number:
  8. Invalid initial heap size: -XmsM
  9. Error: Could not create the Java Virtual Machine.
  10. Error: A fatal exception has occurred. Program will exit.

 

这种情况下,在/etc/cassandra/cassandra-env.sh中取消以下行注释即可

  1. #MAX_HEAP_SIZE="4G"
  2. #HEAP_NEWSIZE="800M"

将MAX HEAP SIZE 设置为不超过硬件RAM的一半这没用。Cassandra使用Off-Heap-Storage。

 

简单使用

进入数据库

$ bin/cqlsh  

#类似于mysql  现在还没有配置身份验证  所以暂时不需要带上用户名密码

 

$ ./bin/cqlsh node1 9042  # 连接到一个指定的服务器 (9042是监听端口)

 

thriftServer端口是9161

 

基本用法

 

在使用命令的时候记得常用tab,会有自动补齐功能。

 

帮助:

cqlsh> help;

cqlsh> CREATE_TABLE help;

 

显示当前cluster:

cqlsh> DESCRIBE CLUSTER;

 

显示当前存在的keyspaces:

cqlsh> DESCRIBE KEYSPACES ;

Cluster: JanusGraphCassandraCluster

 

这些system_traces system_schema system_auth system system_distributed自带的系统keyspaces是用来做内部管理的,有点和master,temp database类似。Cassandra使用这些keyspaces保存schema,tracing和security information。

 

 

使用keyspace和表

-Cassandra keyspace和关系型数据库的概念类似。它可以定义一个或多个(表 or column families)。

 

创建keyspace:

cqlsh> CREATE KEYSPACE janusgraph WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '1'};

cqlsh> DESCRIBE janusgraph;

注:class代表使用什么作为replication策略,replication_factor表示这个keyspace的数据需要写到几个node上面去。在production的环境下面,一定不能只使用1个replication_factor。

 

切换到新建的keyspace:

cqlsh> USE janusgraph ;

 

在新建的keyspace里面创建表:

cqlsh:janusgraph> CREATE TABLE user ( first_name text, last_name text, PRIMARY KEY (first_name));

 

cqlsh:janusgraph> DESCRIBE user ;

注:也可以直接使用 CREATE TABLE janusgraph.user ( 这种语法创建表,不需要切换keyspace。

 

插入数据到表中:

cqlsh:janusgraph> INSERT INTO user (first_name, last_name ) VALUES ( 'zhe', 'xiao');

cqlsh:janusgraph> SELECT * FROM user ;

cqlsh:my_keyspace> DELETE last_name FROM user WHERE first_name = 'zhe';

cqlsh:my_keyspace> select * from user ;

cqlsh:my_keyspace> DELETE FROM user WHERE first_name = 'zhe';

 

清空或者删除表:

cqlsh:my_keyspace> TRUNCATE user ;

cqlsh:my_keyspace> DROP TABLE user ;

 

遇到问题

启动cassandra报错:java.lang.OutOfMemoryError: unable to create new native thread 

 

当前会话有效设置

ulimit -u # 查看nproc 
ulimit -u 65535 # 设置nproc,仅当前会话有效

  

全局有效

cat /etc/security/limits.d/90-nproc.conf 
* soft nproc 1024

vi /etc/security/limits.d/90-nproc.conf 
* soft nproc 655350

 

 

ES安装及配置

 

elasticsearch.yml

 

3台机器配置不同点1:

(node1)node.name: es-node-1

(node2)node.name: es-node-2

(node3)node.name: es-node-3

3台机器配置不同点2:

(node1)network.host: 192.168.110.21

(node2)network.host: 192.168.110.22

(node3)network.host: 192.168.110.23

 

3台机器配置如下:

(3个配置文件,最少可以只有两处不同,红标处--即需要修改为对应机器的参数)node1示例:

 

单机模式: 只需将黄线处注释掉即可。

 

jvm.options

修改为:

-Xms2g

-Xms2g

Ps: 数值需一样,很多人配置为机器内存的1/2

 

报错一:

ERROR: bootstrap checks failed

解决方案:

vim /etc/security/limits.conf //添加, 【注销后并重新登录生效】

  1. * soft nofile 300000
  2. * hard nofile 300000
  3. * soft nproc 102400
  4. * hard nproc 102400


查看是否生效

[seven@localhost ~]$ ulimit -Hn

65536

 

报错二:

max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]

解决方案:

vim /etc/sysctl.conf    //添加

  1. fs.file-max = 1645037
  2. vm.max_map_count=655360

执行:sysctl -p

 

ERROR三: bootstrap checks failed

system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk

解决方法:在elasticsearch.yml中配置bootstrap.system_call_filter为false,注意要在Memory下面:

  1. bootstrap.memory_lock: false
  2. bootstrap.system_call_filter: false

 

ERROR四: max number of threads [1024] for user [raini] is too low, increase to at least [4096]

修改 /etc/security/limits.d/90-nproc.conf 
  1. 原:
  2. * soft nproc 1024
  3. 改为:
  4. * soft nproc 5120

Ps: Xshell连接的集群需要断开重连接才生效

 

启动ES:

每台机器都执行:elasticseach > ./elasticseach.out &

 

Accumulo安装

参考:Accumulo安装:Hbase同胞兄弟-1.9.2

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/745302
推荐阅读
相关标签
  

闽ICP备14008679号