技能速成!教你10分钟内在电脑上配置运行Hive Metastore和Presto

0
0
{"value":"> 作者:范斌;Alluxio创始成员、开源社区副总裁\n**To 初学者:**\n\n本教程将指导初学者在本地服务器上通过搭建Presto和Hive Metastore来查询S3上的数据。\nPresto是用于计划和执行查询的SQL引擎,S3为表分区文件提供存储服务,而Hive Metastore是为Presto访问表模式和位置信息提供catalog服务。\n本教程将展示如何一步一步安装并配置Presto和Hive MetaStore,从而查询存储在公有S3 bucket中的数据。\n\n# 第一步:下载和启动Hive MetaStore\n本教程中我们下载并使用 [apache-hive-2.3.7-bin.tar.gz],点击[下载](下载)并解压Hive的二进制压缩包。\n\n```\\n\$ cd /path/to/tutorial/root\\n\$ wget https://downloads.apache.org/hive/hive-2.3.7/apache-hive-2.3.7-bin.tar.gz\\n\$ tar -zxf apache-hive-2.3.7-bin.tar.gz\\n\$ cd apache-hive-2.3.7-bin\\n```\n\n我们只需要启动Hive Metastore来为Presto提供诸如表模式和分区位置等的catalog信息。\n\n如果你是第一次启动Hive Metastore,请准备好相应的配置文件和环境,同时初始化(initialize)一个新的Metastore。\n\n```\\n\$ export HIVE_HOME=`pwd`\\n\$ cp conf/hive-default.xml.template conf/hive-site.xml\\n\$ mkdir -p hcatalog/var/log/\\n\$ bin/schematool -dbType derby -initSchema\\n```\n\n需要配置Hive来访问S3,可以在conf/hive-env.sh中添加以下几行。同时,Hive需要相应的jar包来访问带有“s3a://”地址的文件,还需要AWS凭证来访问S3 bucket(包括公有S3 bucket)。\n\n```\\nexport HIVE_AUX_JARS_PATH=\${HADOOP_HOME}/share/hadoop/tools/lib/aws-java-sdk-core-1.10.6.jar:\${HADOOP_HOME}/share/hadoop/tools/lib/aws-java-sdk-s3-1.10.6.jar:\${HADOOP_HOME}/share/hadoop/tools/lib/hadoop-aws-2.8.4.jar\\nexport AWS_ACCESS_KEY_ID=<Your AWS Access Key>\\nexport AWS_SECRET_ACCESS_KEY=<Your AWS Secret Key>\\n```\n\n如果你的Hadoop安装包中没有上述jar包,你也可以从maven central下载:\n\n[https://link.zhihu.com/?target=https%3A//repo1.maven.org/maven2/com/amazonaws/aws-java-sdk-core/1.10.6/aws-java-sdk-core-1.10.6.jar](<aws-java-sdk-core-1.10.6.jar>)、[https://link.zhihu.com/?target=https%3A//repo1.maven.org/maven2/com/amazonaws/aws-java-sdk-s3/1.10.6/aws-java-sdk-s3-1.10.6.jar](<aws-java-sdk-s3-1.10.6.jar>)、[https://link.zhihu.com/?target=https%3A//repo1.maven.org/maven2/org/apache/hadoop/hadoop-aws/2.8.4/hadoop-aws-2.8.4.jar](<hadoop-aws-2.8.4.jar>)\n\n启动Hive Metastore,它将在后台运行并监听端口9083(默认端口)。\n\n```\\n\$ hcatalog/sbin/hcat_server.sh start\\nStarted metastore server init, testing if initialized correctly...\\nMetastore initialized successfully on port[9083].\\n```\n\n为了验证MetaStore是否在运行,请在 hcatalog/var/log/路径下查看Hive Metastore日志。\n\n# 第二步:下载并启动Presto服务器\n在本教程中我们以[0.237.1版本]服务器为例,[点击链接](点击链接),打开Presto服务器安装页面,下载并解压经过预编译的(pre-build),服务器压缩包。\n\n```\\n\$ cd /path/to/tutorial/root\\n\$ wget https://repo1.maven.org/maven2/com/facebook/presto/presto-server/0.237.1/presto-server-0.237.1.tar.gz\\n\$ tar -zxf presto-server-0.237.1.tar.gz\\n\$ cd presto-server-0.237.1\\n```\n\n创建一个包含基本Presto配置的配置文件: etc/config.properties。\n\n```\\ncoordinator=true\\nnode-scheduler.include-coordinator=true\\nhttp-server.http.port=8080\\ndiscovery-server.enabled=true\\ndiscovery.uri=http://localhost:8080\\n```\n\n创建 etc/jvm.config来完成以下JVM配置。\n\n```\\n-server\\n-Xmx16G\\n-XX:+UseG1GC\\n-XX:G1HeapRegionSize=32M\\n-XX:+UseGCOverheadLimit\\n-XX:+ExplicitGCInvokesConcurrent\\n-XX:+HeapDumpOnOutOfMemoryError\\n-XX:+ExitOnOutOfMemoryError\\n```\n\n创建 etc/node.properties,应包含下面几行内容:\n\n```\\nnode.environment=production\\nnode.id=ffffffff-ffff-ffff-ffff-ffffffffffff\\nnode.data-dir=/tmp/presto/data\\n```\n\n最后,在etc/catalog/hive.properties中配置Presto Hive连接器,指向刚刚启动的Hive Metastore服务。此外,这里还需要再次输入AWS凭证,完成后,Presto即可从S3读取输入文件。\n\n```\\nconnector.name=hive-hadoop2\\nhive.metastore.uri=thrift://localhost:9083\\nhive.s3.aws-access-key=<Your AWS Access Key>\\nhive.s3.aws-secret-key=<Your AWS Secret Key>\\n```\n\n在后台启动Presto服务器:\n\n```\\n\$ ./bin/launcher start\\n```\n\n为了验证Presto服务器是否在运行,从浏览器中访问链接http://localhost:8080 ,并在网页用户界面(UI)上检查服务器状态。\n\n# 第三步:启动Presto CLI(Presto 命令行工具)\n并运行查询命令,从服务器上下载Presto命令行工具,它是一个单独的二进制文件Presto CLI\n\n```\\n\$ cd /path/to/tutorial/root\\n\$ wget https://repo1.maven.org/maven2/com/facebook/presto/presto-cli/0.237.1/presto-cli-0.237.1-executable.jar\\n\$ mv presto-cli-0.237.1-executable.jar presto\\n\$ chmod +x presto\\n```\n\n连接到上一步中已经启动的Presto服务器。\n\n```\\n\$ ./presto --server localhost:8080 --catalog hive --debug\\n```\n\n使用默认模式\n\n```\\npresto> use default;\\nUSE\\n```\n\n基于S3中的文件在默认模式下创建一个新表,这些信息将被发送到Hive MetaStore。\n\n```\\npresto:default> CREATE TABLE reason (\\n r_reason_sk integer,\\n r_reason_id varchar,\\n r_reason_desc varchar\\n) WITH (\\n external_location = 's3a://apc999/presto-tutorial/example-reason',\\n format = 'PARQUET'\\n);\\nCREATE TABLE\\n```\n\n扫描创建的新表:\n\n```\\npresto:default> SELECT * FROM reason limit 3;\\n r_reason_sk | r_reason_id | r_reason_desc \\n-------------+------------------+------------------------\\n 1 | AAAAAAAABAAAAAAA | Package was damaged \\n 2 | AAAAAAAACAAAAAAA | Stopped working \\n 3 | AAAAAAAADAAAAAAA | Did not get it on time \\n(3 rows)Query 20200703_074406_00011_8vq8w, FINISHED, 1 node\\nhttp://localhost:8080/ui/query.html?20200703_074406_00011_8vq8w\\nSplits: 18 total, 18 done (100.00%)\\nCPU Time: 0.5s total, 6 rows/s, 2.06KB/s, 27% active\\nPer Node: 0.1 parallelism, 0 rows/s, 279B/s\\nParallelism: 0.1\\nPeak User Memory: 0B\\nPeak Total Memory: 219B\\nPeak Task Total Memory: 219B\\n0:04 [3 rows, 1002B] [0 rows/s, 279B/s]\\n```\n\n# 第四步:停止服务器\n```\\n\$ cd /path/to/tutorial/root\\n\$ presto-server-0.237.1/bin/launcher stop\\n\$ apache-hive-2.3.7-bin/hcatalog/sbin/hcat_server.sh stop\\n```\n\n# 总结:\n在本教程中,我们演示了如何通过搭建Presto和Hive Metastore来对存储在公有S3 bucket中的数据进行SQL查询,希望对你有所帮助。","render":"<blockquote>\\n<p>作者:范斌;Alluxio创始成员、开源社区副总裁<br />\\n<strong>To 初学者:</strong></p>\\n</blockquote>\n<p>本教程将指导初学者在本地服务器上通过搭建Presto和Hive Metastore来查询S3上的数据。<br />\\nPresto是用于计划和执行查询的SQL引擎,S3为表分区文件提供存储服务,而Hive Metastore是为Presto访问表模式和位置信息提供catalog服务。<br />\\n本教程将展示如何一步一步安装并配置Presto和Hive MetaStore,从而查询存储在公有S3 bucket中的数据。</p>\n<h1><a id=\\"Hive_MetaStore_7\\"></a>第一步:下载和启动Hive MetaStore</h1>\\n<p>本教程中我们下载并使用 [apache-hive-2.3.7-bin.tar.gz],点击<a href=\\"%E4%B8%8B%E8%BD%BD\\" target=\\"_blank\\">下载</a>并解压Hive的二进制压缩包。</p>\\n<pre><code class=\\"lang-\\">\$ cd /path/to/tutorial/root\\n\$ wget https://downloads.apache.org/hive/hive-2.3.7/apache-hive-2.3.7-bin.tar.gz\\n\$ tar -zxf apache-hive-2.3.7-bin.tar.gz\\n\$ cd apache-hive-2.3.7-bin\\n</code></pre>\\n<p>我们只需要启动Hive Metastore来为Presto提供诸如表模式和分区位置等的catalog信息。</p>\n<p>如果你是第一次启动Hive Metastore,请准备好相应的配置文件和环境,同时初始化(initialize)一个新的Metastore。</p>\n<pre><code class=\\"lang-\\">\$ export HIVE_HOME=`pwd`\\n\$ cp conf/hive-default.xml.template conf/hive-site.xml\\n\$ mkdir -p hcatalog/var/log/\\n\$ bin/schematool -dbType derby -initSchema\\n</code></pre>\\n<p>需要配置Hive来访问S3,可以在conf/hive-env.sh中添加以下几行。同时,Hive需要相应的jar包来访问带有“s3a://”地址的文件,还需要AWS凭证来访问S3 bucket(包括公有S3 bucket)。</p>\n<pre><code class=\\"lang-\\">export HIVE_AUX_JARS_PATH=\${HADOOP_HOME}/share/hadoop/tools/lib/aws-java-sdk-core-1.10.6.jar:\${HADOOP_HOME}/share/hadoop/tools/lib/aws-java-sdk-s3-1.10.6.jar:\${HADOOP_HOME}/share/hadoop/tools/lib/hadoop-aws-2.8.4.jar\\nexport AWS_ACCESS_KEY_ID=&lt;Your AWS Access Key&gt;\\nexport AWS_SECRET_ACCESS_KEY=&lt;Your AWS Secret Key&gt;\\n</code></pre>\\n<p>如果你的Hadoop安装包中没有上述jar包,你也可以从maven central下载:</p>\n<p><a href=\\"aws-java-sdk-core-1.10.6.jar\\" target=\\"_blank\\">https://link.zhihu.com/?target=https%3A//repo1.maven.org/maven2/com/amazonaws/aws-java-sdk-core/1.10.6/aws-java-sdk-core-1.10.6.jar</a>、<a href=\\"aws-java-sdk-s3-1.10.6.jar\\" target=\\"_blank\\">https://link.zhihu.com/?target=https%3A//repo1.maven.org/maven2/com/amazonaws/aws-java-sdk-s3/1.10.6/aws-java-sdk-s3-1.10.6.jar</a>、<a href=\\"hadoop-aws-2.8.4.jar\\" target=\\"_blank\\">https://link.zhihu.com/?target=https%3A//repo1.maven.org/maven2/org/apache/hadoop/hadoop-aws/2.8.4/hadoop-aws-2.8.4.jar</a></p>\\n<p>启动Hive Metastore,它将在后台运行并监听端口9083(默认端口)。</p>\n<pre><code class=\\"lang-\\">\$ hcatalog/sbin/hcat_server.sh start\\nStarted metastore server init, testing if initialized correctly...\\nMetastore initialized successfully on port[9083].\\n</code></pre>\\n<p>为了验证MetaStore是否在运行,请在 hcatalog/var/log/路径下查看Hive Metastore日志。</p>\n<h1><a id=\\"Presto_50\\"></a>第二步:下载并启动Presto服务器</h1>\\n<p>在本教程中我们以[0.237.1版本]服务器为例,<a href=\\"%E7%82%B9%E5%87%BB%E9%93%BE%E6%8E%A5\\" target=\\"_blank\\">点击链接</a>,打开Presto服务器安装页面,下载并解压经过预编译的(pre-build),服务器压缩包。</p>\\n<pre><code class=\\"lang-\\">\$ cd /path/to/tutorial/root\\n\$ wget https://repo1.maven.org/maven2/com/facebook/presto/presto-server/0.237.1/presto-server-0.237.1.tar.gz\\n\$ tar -zxf presto-server-0.237.1.tar.gz\\n\$ cd presto-server-0.237.1\\n</code></pre>\\n<p>创建一个包含基本Presto配置的配置文件: etc/config.properties。</p>\n<pre><code class=\\"lang-\\">coordinator=true\\nnode-scheduler.include-coordinator=true\\nhttp-server.http.port=8080\\ndiscovery-server.enabled=true\\ndiscovery.uri=http://localhost:8080\\n</code></pre>\\n<p>创建 etc/jvm.config来完成以下JVM配置。</p>\n<pre><code class=\\"lang-\\">-server\\n-Xmx16G\\n-XX:+UseG1GC\\n-XX:G1HeapRegionSize=32M\\n-XX:+UseGCOverheadLimit\\n-XX:+ExplicitGCInvokesConcurrent\\n-XX:+HeapDumpOnOutOfMemoryError\\n-XX:+ExitOnOutOfMemoryError\\n</code></pre>\\n<p>创建 etc/node.properties,应包含下面几行内容:</p>\n<pre><code class=\\"lang-\\">node.environment=production\\nnode.id=ffffffff-ffff-ffff-ffff-ffffffffffff\\nnode.data-dir=/tmp/presto/data\\n</code></pre>\\n<p>最后,在etc/catalog/hive.properties中配置Presto Hive连接器,指向刚刚启动的Hive Metastore服务。此外,这里还需要再次输入AWS凭证,完成后,Presto即可从S3读取输入文件。</p>\n<pre><code class=\\"lang-\\">connector.name=hive-hadoop2\\nhive.metastore.uri=thrift://localhost:9083\\nhive.s3.aws-access-key=&lt;Your AWS Access Key&gt;\\nhive.s3.aws-secret-key=&lt;Your AWS Secret Key&gt;\\n</code></pre>\\n<p>在后台启动Presto服务器:</p>\n<pre><code class=\\"lang-\\">\$ ./bin/launcher start\\n</code></pre>\\n<p>为了验证Presto服务器是否在运行,从浏览器中访问链接http://localhost:8080 ,并在网页用户界面(UI)上检查服务器状态。</p>\n<h1><a id=\\"Presto_CLIPresto__108\\"></a>第三步:启动Presto CLI(Presto 命令行工具)</h1>\\n<p>并运行查询命令,从服务器上下载Presto命令行工具,它是一个单独的二进制文件Presto CLI</p>\n<pre><code class=\\"lang-\\">\$ cd /path/to/tutorial/root\\n\$ wget https://repo1.maven.org/maven2/com/facebook/presto/presto-cli/0.237.1/presto-cli-0.237.1-executable.jar\\n\$ mv presto-cli-0.237.1-executable.jar presto\\n\$ chmod +x presto\\n</code></pre>\\n<p>连接到上一步中已经启动的Presto服务器。</p>\n<pre><code class=\\"lang-\\">\$ ./presto --server localhost:8080 --catalog hive --debug\\n</code></pre>\\n<p>使用默认模式</p>\n<pre><code class=\\"lang-\\">presto&gt; use default;\\nUSE\\n</code></pre>\\n<p>基于S3中的文件在默认模式下创建一个新表,这些信息将被发送到Hive MetaStore。</p>\n<pre><code class=\\"lang-\\">presto:default&gt; CREATE TABLE reason (\\n r_reason_sk integer,\\n r_reason_id varchar,\\n r_reason_desc varchar\\n) WITH (\\n external_location = 's3a://apc999/presto-tutorial/example-reason',\\n format = 'PARQUET'\\n);\\nCREATE TABLE\\n</code></pre>\\n<p>扫描创建的新表:</p>\n<pre><code class=\\"lang-\\">presto:default&gt; SELECT * FROM reason limit 3;\\n r_reason_sk | r_reason_id | r_reason_desc \\n-------------+------------------+------------------------\\n 1 | AAAAAAAABAAAAAAA | Package was damaged \\n 2 | AAAAAAAACAAAAAAA | Stopped working \\n 3 | AAAAAAAADAAAAAAA | Did not get it on time \\n(3 rows)Query 20200703_074406_00011_8vq8w, FINISHED, 1 node\\nhttp://localhost:8080/ui/query.html?20200703_074406_00011_8vq8w\\nSplits: 18 total, 18 done (100.00%)\\nCPU Time: 0.5s total, 6 rows/s, 2.06KB/s, 27% active\\nPer Node: 0.1 parallelism, 0 rows/s, 279B/s\\nParallelism: 0.1\\nPeak User Memory: 0B\\nPeak Total Memory: 219B\\nPeak Task Total Memory: 219B\\n0:04 [3 rows, 1002B] [0 rows/s, 279B/s]\\n</code></pre>\\n<h1><a id=\\"_166\\"></a>第四步:停止服务器</h1>\\n<pre><code class=\\"lang-\\">\$ cd /path/to/tutorial/root\\n\$ presto-server-0.237.1/bin/launcher stop\\n\$ apache-hive-2.3.7-bin/hcatalog/sbin/hcat_server.sh stop\\n</code></pre>\\n<h1><a id=\\"_173\\"></a>总结:</h1>\\n<p>在本教程中,我们演示了如何通过搭建Presto和Hive Metastore来对存储在公有S3 bucket中的数据进行SQL查询,希望对你有所帮助。</p>\n"}
目录
亚马逊云科技解决方案 基于行业客户应用场景及技术领域的解决方案
联系亚马逊云科技专家
亚马逊云科技解决方案
基于行业客户应用场景及技术领域的解决方案
联系专家
0
目录
关闭