datagrip远程连接hive kinit认证 spark连接远程hive_hadoop启动


最近尝试在自己的电脑上安装一些大数据组件,记录一下安装步骤和遇到的问题~

一、macbook系统:Mojave 10.14.6

二、安装各组件:

1、macbook安装hadoop、yarn

1.1 参考文献:

1.2 安装条件

安装java8(注意java版本很重要,如果java版本不对可能yarn无法启动)

安装homebrew

1.3 安装步骤:

1.3.1 修改主机名:


sudo scutil --set HostName localhost


1.3.2 配置SSH localhost

  • 打开系统偏好设置-共享-远程登录(默认情况下关闭,将“远程登录打开即可”);
  • 生成密钥对,执行如下命令
$ ssh-keygen -t rsa #一路回车到结束


  • 执行如下命令,将在当前用户目录中的.ssh文件夹中生成id_rsa文件并且以后可以不使用密码登录:
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys


  • 使用下面命令,测试是否可以不适用密码登录:
$ ssh localhost


1.3.3 执行如下命令


brew install hadoop #我安装过程中,默认安装版本3.2.1


1.3.4 配置文件

1) 在目录/usr/local/Cellar/hadoop/3.2.1/libexec/etc/hadoop下找到hadoop-env.sh文件中找到其中一行

修改export HADOOP_OPTS:


export HADOOP_OPTS="$HADOOP_OPTS -Djava.net.preferIPv4Stack=true -Djava.security.krb5.realm= -Djava.security.krb5.kdc="


2)在目录/usr/local/Cellar/hadoop/3.2.1/libexec/etc/hadoop下找到core-site.xml,插入如下代码:


<configuration>
  <property>
     <name>hadoop.tmp.dir</name>  
<value>/usr/local/Cellar/hadoop/hdfs/tmp</value>
    <description>A base for other temporary directories.</description>
  </property>
  <property>
     <name>fs.default.name</name>                                     
     <value>hdfs://localhost:9000</value>                             
  </property>     
	<property>
        <name>hadoop.http.staticuser.user</name>
        <value>hadoop</value>(指定为用户名字,此处可以设为电脑的用户)
</property>                                                    
</configuration>


注意:如果不指定:hadoop.http.staticuser.user,则在网页http://localhost:9870/ 中utilities中browse the file system会报错“Failed to retrieve data from /webhdfs/v1/?op=LISTSTATUS: Server Error“


datagrip远程连接hive kinit认证 spark连接远程hive_hadoop启动_02


3)在目录/usr/local/Cellar/hadoop/2.6.0/libexec/etc/hadoop下找到hdfs-site.xml


<configuration>
   <property>
     <name>dfs.replication</name>
     <value>1</value>
    </property>
</configuration>


4)在目录/usr/local/Cellar/hadoop/2.6.0/libexec/etc/hadoop下找到mapred-site.xml, 在其中添加:


<configuration>
      <property>
        <name>mapred.job.tracker</name>
        <value>localhost:9010</value>
      </property>
</configuration>


5) 格式化HDFS

在运行后台程序前, 必须格式化新安装的HDFS, 并通过创建存储目录和初始化元数据创新空的文件系统, 执行下面命令:
$ hdfs namenode -format

6) 启动hadoop

启动后台程序:在/usr/local/Cellar/hadoop/2.6.0/sbin目录下, 执行如下命令

  • $ start-dfs.sh #启动HDFS
  • $ stop-dfs.sh #停止HDFS

7) 查看Hadoop 是否成功


# 查看启动的服务,如果有下面的服务则启动hadoop成功
jps

DataNode
NameNode  
SecondaryNameNode


8) 打开网页 http://localhost:9870/

1.3.5 启动yarn

1)修改配置文件 libexec/etc/hadoop/mapred-site.xml


<configuration>
	<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
	</property>
</configuration>


2)修改配置文件 libexec/etc/hadoop/yarn-site.xml


<configuration>
	<property>
		<name>yarn.nodemanager.aux-services</name>
		<value>mapreduce_shuffle</value>
	</property>
	<property>
        <name>yarn.nodemanager.env-whitelist</name>
        <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
    </property>
</configuration>


3)启动yarn

# 启动ResourceManager 和 NodeManager,启动成功后可以访问http://localhost:8088/cluster

sbin/start-yarn.sh

# 停止 sbin/stop-yarn.sh

# 可以通过start-all.sh 来同时启动start-dfs.sh和start-yarn.sh

2、安装mysql

2.1 参考文献:

2.2 安装步骤:

2.2.1 brew install mysql

2.2.2 在terminal中配置mysql的环境变量


vim ~/.bash_profile


添加


PATH="/usr/local/mysql/bin:${PATH}"
     export PATH


其中/usr/local/mysql/bin为mysql的地址,然后关掉terminal,重新点开terminal输入mysql -V即可查看是否配置好环境变量。这里一定要关掉terminal,在新的terminal窗口中输入,否则还是会出现-bash: mysql: command not found的错误。或者此处输入如下命令也可以:


source ~/.bash_profile


2.2.3 启动MySQL

mysql.server start

2.2.4 运行mysql_secure_installation

运行mysql_secure_installation会执行几个设置:
a)为root用户设置密码
b)删除匿名账号
c)取消root用户远程登录
d)删除test库和对test库的访问权限
e)刷新授权表使修改生效
2.2.5 安装workbench

Mysql管理工具为Workbench,版本 8.0.12

Workbench的下载地址链接 Download MySQL Workbench

下载好了,直接安装即可,此后可以在Application找到


datagrip远程连接hive kinit认证 spark连接远程hive_hadoop classpath_03


Workbench连接Mysql数据库

点击MySQL Connnections旁边的加号就可以进入下图连接数据图的界面。按下图输入Hostname和Username即可。


datagrip远程连接hive kinit认证 spark连接远程hive_hadoop classpath_04


3、安装hive

3.1 参考文献

3.2 安装条件

在安装hive之前需要安装hadoop,因为hive本身并没有提供数据存储功能。它的数据是存储在hadoop的HDFS上面的。

3.3 安装步骤

3.3.1 brew install hive

3.3.2 接着配置环境变量,在命令行中打开bash_profile文件


vim ~/.bash_profile


在里面添加下面几行:


export HIVE_HOME=/usr/local/Cellar/hive/3.1.1
export PATH=$HIVE_HOME/bin:$PATH


保存退出以后输入source ~/.bash_profile, 更新环境变量。

然后在命令行中输入hive,就可以看到下面的信息了。


Logging initialized using configuration in jar:file:/usr/local/Cellar/hive/3.1.1/libexec/lib/hive-common-3.1.1.jar!/hive-log4j2.properties Async: true
Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X releases.
hive>


此处发生了如下错误:


SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/usr/local/Cellar/hive/3.1.2/libexec/lib/log4j-slf4j-impl-2.10.0.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/usr/local/Cellar/hadoop/3.2.1/libexec/share/hadoop/common/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;)V
 at org.apache.hadoop.conf.Configuration.set(Configuration.java:1357)
 at org.apache.hadoop.conf.Configuration.set(Configuration.java:1338)
 at org.apache.hadoop.mapred.JobConf.setJar(JobConf.java:536)
 at org.apache.hadoop.mapred.JobConf.setJarByClass(JobConf.java:554)
 at org.apache.hadoop.mapred.JobConf.<init>(JobConf.java:448)
 at org.apache.hadoop.hive.conf.HiveConf.initialize(HiveConf.java:5141)
 at org.apache.hadoop.hive.conf.HiveConf.<init>(HiveConf.java:5099)
 at org.apache.hadoop.hive.common.LogUtils.initHiveLog4jCommon(LogUtils.java:97)
 at org.apache.hadoop.hive.common.LogUtils.initHiveLog4j(LogUtils.java:81)
 at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:699)
 at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:683)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 at java.lang.reflect.Method.invoke(Method.java:498)
 at org.apache.hadoop.util.RunJar.run(RunJar.java:323)
 at org.apache.hadoop.util.RunJar.main(RunJar.java:236)


参考如下链接 :

关键在: com.google.common.base.Preconditions.checkArgument 这是因为hive内依赖的guava.jar和hadoop内的版本不一致造成的。 检验方法:

  1. 查看hadoop安装目录下share/hadoop/common/lib内guava.jar版本
  2. 查看hive安装目录下lib内guava.jar的版本 如果两者不一致,删除版本低的,并拷贝高版本的 问题解决!

我的mac上两个版本分别为:hive:guava-19.0.jar,hadoop:guava-27.0-jre.jar,保留了27版本的。

3.3.3打开mysql,新建database


mysql -u root -p


在数据库里面新建一个database


mysql> create database metastore;


然后进入/usr/local/Cellar/hive/3.1.1/libexec/conf 目录下,键入vim hive-site.xml(此处需要创建文件), 将下面的代码粘贴进去,修改mysql用户名密码


<configuration>
  
  <property>
        <name>hive.metastore.local</name>
        <value>true</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://localhost/metastore</value>
    </property>
 
    <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>mysql的密码</value>
    </property>
 
 <!-- hive用来存储不同阶段的map/reduce的执行计划的目录,同时也存储中间输出结果
,默认是/tmp/<user.name>/hive,我们实际一般会按组区分,然后组内自建一个tmp目录存>储 -->
 
    <property>
        <name>hive.exec.local.scratchdir</name>
        <value>/tmp/hive</value>
    </property>
 
 
    <property>
        <name>hive.downloaded.resources.dir</name>
            <value>/tmp/hive</value>
    </property>
 
    <property>
 
        <name>hive.metastore.warehouse.dir</name>
        <value>/user/hive/warehouse</value>
    </property>
 
    <property>
        <name>hive.server2.logging.operation.log.location</name>
        <value>/tmp/hive</value>
    </property>
 
</configuration>


可以先在这里运行一下hive,看看粘贴的文件有没有问题。如果没有问题就可以进行下一步了。

3.3.4 在mysql的官网下载mysql-connector,选下面的操作系统。解压以后,再把jar文件复制到/usr/local/Cellar/hive/3.1.1/libexec/lib目录下面。


datagrip远程连接hive kinit认证 spark连接远程hive_hadoop启动_05


如果没有下载mysql-connector,就会出现如下问题。


FAILED: Error in metadata: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.metastore.HiveMetaStoreClient


3.3.5 最后执行schematool -initSchema -dbType mysql,出现下面的结果,就说明执行成功了。


Initialization script completed
schemaTool completed


3.3.6 运行hive,输入show database;


hive> show databases
    > ;
OK
default
Time taken: 0.675 seconds, Fetched: 1 row(s)
hive>


4、安装hbase

4.1 参考文献

4.2 安装步骤:

4.2.1 brew install hbase

4.2.2 修改/usr/local/Cellar/hbase/1.2.9/libexec/conf/hbase-env.sh

在最后一行增加环境变量,hadoop和hbase的版本号修改成自己实际安装的版本号


export HBASE_CLASSPATH=/usr/local/Cellar/hadoop/3.1.1/libexec/etc/hadoop
export HBASE_MANAGES_ZK=true
export HBASE_HOME=/usr/local/Cellar/hbase/1.2.9/libexec
export HBASE_LOG_DIR=${HBASE_HOME}/logs
export HBASE_REGIONSERVERS=${HBASE_HOME}/conf/regionservers


4.2.3. 修改/usr/local/Cellar/hbase/1.2.9/libexec/conf/hbase-site.xml

我安装的版本为1.3.5,未修改此文件

4.2.4 修改/usr/local/Cellar/hbase/1.2.9/libexec/conf/regionservers

在regionservers文件中添加localhost, 如果有就不用再添加了

4.2.5. 配置HBase的环境变量

vi ~/.bash_profile


export HBASE_HOME=/usr/local/Cellar/hbase/1.2.9/libexec
export PATH=$PATH:${HBASE_HOME}/bin


source ~/.bash_profile

4.2.6. 启动HBase


cd /usr/local/Cellar/hbase/1.2.9/bin
# 停止HBase ./stop-hbase.sh
./start-hbase.sh


4.2.7 查看HBase状态,先进入hbase的shell:


hbase shell


然后执行:


hbase(main):001:0> status
1 active master, 0 backup masters, 1 servers, 0 dead, 2.0000 average load

hbase(main):002:0>


5、安装spark

5.1 参考文献:

https://cloud.tencent.com/developer/article/1423508

5.2 安装步骤

5.2.1 命令行执行:brew install scala

执行完成后,终端输入:scala -version 进行查看,如下表明安装成功:


jiangxingqideMacBook-Pro:~ jiangxingqi$ scala -version
Scala code runner version 2.12.8 -- Copyright 2002-2018, LAMP/EPFL and Lightbend, Inc.


然后在环境变量中增加scala相关的变量,命令行输入:vim ~/.bash_profile进行编辑,增加环境变量:


export SCALA_HOME=/usr/local/Cellar/scala/2.12.8
export PATH=$PATH:$SCALA_HOME/bin


5.2.2 brew install apache-spark

vim ~/.bash_profile


export SPARK_PATH="/usr/local/Cellar/apache-spark/2.2.0"
export PATH="$SPARK_PATH/bin:$PATH"


source ~/.bash_profile

5.2.3 ./spark-shell出现如下界面表示成功:


datagrip远程连接hive kinit认证 spark连接远程hive_hbase安装_06


6、安装kettle、配置

6.1 参考文献:

https://community.hitachivantara.com/s/article/data-integration-kettle

6.2安装步骤:

6.2.1、brew install kettle 总是不成功

6.2.2、前往如下网址进行下载:https://community.hitachivantara.com/s/article/data-integration-kettle ,After unzipping the downloaded file, you can launch Spoon by navigating to the folder /data-integration and double clicking on the "Data Integration" application icon.

6.2.3、配置一个简单的mysql到hdfs的数据转化:

参考 进行,配置结果如下:


datagrip远程连接hive kinit认证 spark连接远程hive_hadoop classpath_07


datagrip远程连接hive kinit认证 spark连接远程hive_hadoop启动_08


点击测试出现如下结果:


datagrip远程连接hive kinit认证 spark连接远程hive_eclipse远程连接hadoop_09


上图中虽然有错误,但是不影响数据的转化。

可能遇到的问题:

1)mysql报驱动错误,请下载如下版本的驱动:mysql-connector-java-5.1.46-bin.jar

2)测试不通过,可以将如下配置文件拷贝到:data-integration/plugins/pentaho-big-data-plugin/hadoop-configurations/cdh510/目录下


datagrip远程连接hive kinit认证 spark连接远程hive_eclipse远程连接hadoop_10


转换成功可以从日志中看到:


datagrip远程连接hive kinit认证 spark连接远程hive_hadoop启动_11


此时会在hdfs上生成相应文件。