ubantu搭建数据仓库

110 阅读5分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 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安装配置

下载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

解压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>