持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第1天,点击查看活动详情
1:mysql安装配置
下载mysql
mysql sudo apt install mysql-server //安装mysql
netstat -tap | grep mysql //检查是否安装好,若状态时LISTEN,表示已经安装好
sudo cat /etc/mysql/debian.cnf //由于Ubantu18无设置mysql密码的步骤,使用此命令可以看到默认的mysql账户密码
sudo mysql -u debian-sys-maint -p //回车后输入上个命令查到的密码即可登录成功 #修改密码
use mysql; #连接到mysql数据库
update mysql.user set authentication_string=password(‘123456’) where user=‘root’ and Host =‘localhost’; #修改密码123456是密码
update user set plugin=“mysql_native_password”;
flush privileges;
quit;
2:java环境(jdk)安装配置
下载jdk,此处使用了jdk1.8版本,下载完毕后, /usr/local下(使用其他目录也可以,不要包含中文路径)。
#解压jdk
sudo tar -zxvf /usr/local/jdk-8u301-linux-x64.tar.gz -C /usr/local/
#文件夹重命名
sudp mv /usr/local/jdk1.8.0_341/ /user/local/java/
#配置系统环境变量 可以不配置系统环境变量,只配置用户环境变量,切换用户后将无法使用jdk
sudo gedit /etc/environment
#加入以下
export JAVA_HOME=/usr/local/java export
JRE_HOME=/usr/local/java/jre export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
#配置用户环境变量
sudo gedit /etc/profile
#加入以下
export JAVA_HOME=$PATH:/usr/local/java export JRE_HOME=$PATH:/usr/local/java/jre export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin #更新文件 source /etc/profile source /etc/environment
#查看java版本
java -version
备注:如果因为修改了配置文件卡在登录界面无法登录(输入密码后界面闪一下退回到用户选择界面)
解决:在用户选择界面(不是密码输入界面!!!)按ctrl+alt+Fx(x是1,2,3,4,5,6中的一个),进入tty界面,登录后,先配置临时环境变量
export /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
#恢复误修改的问题文件
sudo vi /etc/profile //删除自己配置的变量,保存
sudo reboot //重启
3.配置无密码登录
#安装openssh
sudo apt-get install openssh-server
#创建公钥私钥(一路回车即可)
ssh-keygen -t rsa
#创建authorized_keys文件并修改权限为600
cd .ssh
touch authorized_keys
chmod 600 authorized_keys
#将公钥追加到authorized_keys文件中去
cat id_rsa.pub >> authorized_keys
#测试是否配置正确
ssh 你的用户名 //如果不需要密码则成功
exit //注销登录
3:hadoop安装配置
#解压 以2.10.2为例
tar -zxvf hadoop-2.10.2.tar.gz
#在hadoop解压路径下创建 tmp路径,在tmp路径下创建dfs路径,在dfs路径下创建name和data
#修改配置文件core-site.xml
gedit /usr/local/hadoop-2.10.2/etc/hadoop/core-site.xml
在文本后配置(原configuration里)
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
配置文件hdfs-site.xml
gedit hdfs-site.xml
在文本后配置
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name> <value>file:/usr/local/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name> <value>file:/usr/local/hadoop/tmp/dfs/data</value>
</property>
</configuration>
(3)配置文件mapred-site.xml.template
gedit mapred-site.xml.template
在文本后配置
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
</configuration>
(4)配置文件Hadoop-env.sh
gedit hadoop-env.sh
找到export JAVA_HOME,配置JAVA_HOME路径
export JAVA_HOME="/opt/java/jdk1.7.0_79"
(5)在/etc/profile 文件加入 Hadoop 的环境变量
export JAVA_HOME=$PATH:/opt/java/jdk1.7.0_79 export CLASSPATH=.:${JAVA_HOME}/lib:${JAVA_HOME}E/lib export HADOOP_HOME=$PATH:/usr/local/hadoop-2.6.5 export PATH=${JAVA_HOME}/bin:$PATH:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin
(6)使用命令source /etc/profile 使环境变量更新起作用
source /etc/profile
(7)配置完成后,需要验证是否配置正确
初始化 HDFS 系统
进入 /usr/local/hadoop-2.6.5
cd /usr/local/hadoop-2.6.5
Hadoop初始化
bin/hdfs namenode -format
JPS 语句检测(注意:这里表示成功的信息必须含有除掉 JPS 的其他五个进程,缺一不可,如若出现缺少,如果是DataNode 以及 NameNode,那么就是 dfs 的配置不正确,重新配置然后删掉原来生成temp 文件,重新启动)
jps
4:hive安装配置
解压hive
sudo tar -zxvf apache-hive-2.3.9-bin.tar.gz /usr/local
为了后续配置方便,可以给解压后的文件夹改名
sudo mv apache-hive-2.3.9-bin /usr/local/hive-2.3.9
在/etc/profile 文件中,添加 HIVE_HOME和PATH
gedit /etc/profile
配置如下:
export JAVA_HOME=/opt/java/jdk1.7.0_79 export CLASSPATH=.:${JAVA_HOME}/lib:${JAVA_HOME}E/lib export HADOOP_HOME=$PATH:/usr/local/hadoop-2.6.5 export HIVE_HOME=/usr/local/hadoop-2.6.5/hive/apache-hive-1.2.1-bin export PATH=${JAVA_HOME}/bin:$PATH:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:$PATH:${HIVE_HOME}/bin
保存
source /etc/profile
修改Hive 本身的配置文件(在hive-2.3.9/conf 中复制一份 hive-default.xml.template ,并重命名为 hive-site.xml 文件。)
cp hive-default.xml.template hive-site.xml
编辑hive-site.xml
hive-site里配置如下(个性化配置根据自己的情况进行更改)
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost/root?createDatabaseIfNotExist=true&useSSL=false</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
<description>Username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>ttys</value>
<description>password to use against metastore database</description>
</property>
<property>
<name>hive.server2.logging.operation.log.location</name>
<value>/usr/local/hive-2.3.9/tmp/hive/operation_logs</value>
<description>Top level directory where operation logs are stored if logging functionality is enabled</description>
</property>
<property>
<name>hive.metastore.local</name>
<value>true</value>
</property>
<property>
<name>hive.exec.local.scratchdir</name>
<value>/usr/local/hive-2.3.9/tmp/hive</value>
<description>Local scratch space for Hive jobs</description>
</property>
<property>
<name>hive.downloaded.resources.dir</name>
<value>/usr/local/hive-2.3.9/tmp/hive/resources</value>
<description>Temporary local directory for added resources in the remote file system.</description>
</property>
<property>
<name>hive.querylog.location</name>
<value>/usr/local/hive-2.3.9/tmp/hive/querylog</value>
<description>Location of Hive run time structured log file</description>
</property>
<property>
<name>hive.server2.thrift.port</name>
<value>10000</value>
<description>Port number of HiveServer2 Thrift interface when hive.server2.transport.mode is 'binary'.</description>
</property>
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value> </property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
</configuration>
/usr/local/hive-2.3.9 路径下新建tmp目录,tmp下新建hive目录,hive下新建
operation_logs、resources、querylog目录
初始化hive元数据
schematool -dbType mysql -initSchema
注意:将/usr/local/hive-2.3.9/lib下的jline-2.12.jar替换掉/usr/local/hadoop-2.6.5/share/hadoop/yarn/lib自带的包。不然会报错
最后,将下载的 mysql-connector-java-5.0.8-bin.jar复制到 /usr/local/hive-2.3.9/lib中
重点hive启动:
启动前确保
- mysql已启动
- hadoop已安装并初始化元数据
1.如果我们在home下面进入hive,那么我们的metastore_db,就会产生在home目录下。
2.如果我们在/usr目录下进入hive,那么我们的metastore_db,就会产生在usr目录下。
这里我们选择在/usr/local/hadoop-2.6.5启动hive
1:启动hadoop(输入jps确保处jsp外有5个进程启动,参考前面)
2:启动hiveserver2
hive --service hiveserver2 &
3:启动metastore
hive --service metastore &
5:Kettle连接hive
此处使用了kettle8.3版本 Hadoop2.10.2 Hive2.3.9
1:打开\pdi-ce-8.3.0.0-371\data-integration\plugins\pentaho-big-data-plugin\下的plugin.properties(为什么是cdh不是hdp并没有弄懂)
2:添加hive驱动
拷贝hive的安装目录下/usr/local/hive2.3.9/lib里所有以hive开头的jar包到kettle安装目录\pdi-ce-8.3.0.0-371\data-integration\plugins\pentaho-big-data-plugin\hadoop-configurations\cdh61\lib下
3:添加hadoop驱动
拷贝hadoop安装目录下/usr/local/Hadoop2.10.2/share/hadoop/common里的hadoop-common-x.x.x-cdhx.x.x.jar到上一步cdh61目录下
4:kettle新建DB连接,配置如下
Q&A
1:kettle执行时
Error while processing statement: FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask
解决一:
可在执行sql语句前加上这句解决上面问题:
set hive.support.concurrency=false;
解决方法二:
原因:yarn资源不足
该错误是YARN的虚拟内存计算方式导致,上例中用户程序申请的内存为1Gb,YARN根据此值乘以一个比例(默认为2.1)得出申请的虚拟内存的值,当YARN计算的用户程序所需虚拟内存值大于计算出来的值时,就会报出以上错误。调节比例值可以解决该问题。具体参数为:yarn-site.xml中的yarn.nodemanager.vmem-pmem-ratio
解决方法:
调整hadoop配置文件yarn-site.xml中值:
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>2048</value>//也可以调整为更大
<description>default value is 1024</description> </property>
</property>