最近尝试在自己的电脑上安装一些大数据组件,记录一下安装步骤和遇到的问题~
一、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“
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找到
Workbench连接Mysql数据库
点击MySQL Connnections旁边的加号就可以进入下图连接数据图的界面。按下图输入Hostname和Username即可。
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内的版本不一致造成的。 检验方法:
- 查看hadoop安装目录下share/hadoop/common/lib内guava.jar版本
- 查看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目录下面。
如果没有下载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出现如下界面表示成功:
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的数据转化:
参考 进行,配置结果如下:
点击测试出现如下结果:
上图中虽然有错误,但是不影响数据的转化。
可能遇到的问题:
1)mysql报驱动错误,请下载如下版本的驱动:mysql-connector-java-5.1.46-bin.jar
2)测试不通过,可以将如下配置文件拷贝到:data-integration/plugins/pentaho-big-data-plugin/hadoop-configurations/cdh510/目录下
转换成功可以从日志中看到:
此时会在hdfs上生成相应文件。