- 手动安装CDH笔记
- 一、集群情况介绍
- 二、环境准备
- 三、安装ZooKeeper
- 四、安装HDFS和YARN
- 五、安装LZO
- 六、在集群中部署HDFS
- 七、在集群中部署MapReduce v2(YARN)
- 八、CDH中使用的Hadoop用户
- 九、安装Crunch
- 十、安装Flume
- 十一、安装HBase
- 十二、安装HCatalog
- 十三、安装Hive
- 十四、安装Impala
- 十五、安装HttpFS
- 十六、安装Oozie
- 十六、安装Hue
- 十七、安装Presto
手动安装CDH笔记
一、集群情况介绍
集群节点:dev16–dev21
- 已安装的服务:
- ZooKeeper
- HDFS
- YARN
- LZO
- Hive
- HCatalog
- Hue
- Impala
- Presto
- 准备安装的服务:
- Hue
- Flume
二、环境准备
1.使用puppet管理所有节点,并初始化环境
2.使用Ganglia监控集群性能变化
将dev21
节点作为监控服务节点,其他节点为被监控节点。
3.访问Ganglia监控Web界面
1 2 |
http://dev21.yonyou.com |
三、安装ZooKeeper
官方文档建议zookeeper-server
应安装在奇数个节点上,最少三个
在每个节点执行如下命令:
1 2 |
pdsh -R ssh -w dev[16-21] yum install -y zookeeper.x86_64 zookeeper-server.x86_64 |
分别在每个节点上执行如下命令,每个节点的myid
值都应该是唯一的:
1 2 |
for i in `seq 4`;do ssh root@h${i} "service zookeeper-server init --myid=${i}";done |
在每个节点上编辑zookeeper
的配置文件zoo.cfg
:
1 2 |
vim /etc/zookeeper/conf/zoo.cfg |
在文件的最后添加如下内容:
1 2 3 4 5 6 7 |
server.1=dev17:2888:3888 server.2=dev18:2888:3888 server.3=dev19:2888:3888 server.4=dev20:2888:3888 server.5=dev21:2888:3888 server.6=dev16:2888:3888 |
启动zookeeper-server
:
1 2 |
pdsh -R ssh -w dev[16-21] service zookeeper-server start |
测试zookeeper-server
是否正常启动:
1 2 |
zookeeper-client -server dev18:2181 |
四、安装HDFS和YARN
在dev16
节点安装resource manager
:
1 2 |
yum install hadoop-yarn-resourcemanager |
在dev16
节点安装name node
:
1 2 |
yum install hadoop-hdfs-namenode |
在resource manager
节点之外的所有节点上安装node manager
、datanode
和mapreduce
:
1 2 |
pdsh -w dev[17-21] yum -y install hadoop-yarn-nodemanager hadoop-hdfs-datanode hadoop-mapreduce |
在dev17
节点安装historyserver
和proxyserver
:
1 2 |
pdsh -w dev17 yum -y install hadoop-mapreduce-historyserver hadoop-yarn-proxyserver |
在所有节点上安装hadoop-client
:
1 2 |
pdsh -w dev[16-21] yum -y install hadoop-client |
五、安装LZO
在所有节点下载lzo
源文件并放到/etc/yum.repo.d
目录下:
1 2 |
http://archive.cloudera.com/gplextras5/redhat/5/x86_64/gplextras/cloudera-gplextras5.repo |
在所有节点安装hadoop-lzo
:
1 2 |
pdsh -w dev[16-21] yum -y install hadoop-lzo |
六、在集群中部署HDFS
1.复制Hadoop配置文件
复制hadoop的默认配置文件到指定目录:
1 2 |
pdsh -w dev[16-21] cp -r /etc/hadoop/conf.empty /etc/hadoop/conf.dev |
设置alternatives
指向新的配置目录:
1 2 |
pdsh -w dev[16-21] alternatives --install /etc/hadoop/conf hadoop-conf /etc/hadoop/conf.dev 50 |
1 2 |
pdsh -w dev[16-21] alternatives --set hadoop-conf /etc/hadoop/conf.dev |
2.自定义配置文件
编辑core-site.xml
文件,加入如下内容:
1 2 3 4 5 |
<property> <name>fs.defaultFS</name> <value>hdfs://dev16:8020</value> </property> |
编辑hdfs-site.xml
文件,加入如下内容:
1 2 3 4 5 |
<property> <name>dfs.permissions.superusergroup</name> <value>hadoop</value> </property> |
3.配置本地存储目录
在所有节点创建数据存储目录:
1 2 |
pdsh -w dev[16-21] mkdir -p /data/{1,2,3,4}/dfs/{nn,dn} |
修改本地存储目录的所有者:
1 2 |
pdsh -w dev[16-21] chown -R hdfs:hdfs /data/{1,2,3,4}/dfs |
修改本地存储目录的读写权限:
1 2 |
pdsh -w dev[16-21] chmod -R 700 /data/{1,2,3,4}/dfs |
在namenode
节点编辑hdfs-site.xml
文件,加入如下内容:
1 2 3 4 5 |
<property> <name>dfs.namenode.name.dir</name> <value>file:///data/1/dfs/nn,file:///data/2/dfs/nn,file:///data/3/dfs/nn,file:///data/4/dfs/nn</value> </property> |
在datanode
节点编辑hdfs-site.xml
文件,加入如下内容:
1 2 3 4 5 |
<property> <name>dfs.datanode.data.dir</name> <value>file:///data/1/dfs/dn,file:///data/2/dfs/dn,file:///data/3/dfs/dn,file:///data/4/dfs/dn</value> </property> |
4.设置DataNode节点允许本地存储目录的读写失败
默认情况下,单独dfs.datanode.data.dir
的失败会使HDFS的datanode进程关闭,这会造成namenode对这个datanode上的每个block创建新的副本,最终会导致大量无用的block副本被存储在没发生故障的磁盘上。
可以通过对datanode的dfs.datanode.failed.volumes.tolerated
进行设置来防止这种情况出现。
在所有datanode
节点编辑hdfs-site.xml
文件,加入如下内容:
1 2 3 4 5 |
<property> <name>dfs.datanode.failed.volumes.tolerated</name> <value>3</value> </property> |
复制配置文件到集群中所有节点:
1 2 |
pdcp -w dev[17-21] core-site.xml /etc/hadoop/conf.dev/ |
1 2 |
pdcp -w dev[17-21] hdfs-site.xml /etc/hadoop/conf.dev/ |
5.格式化NameNode
在namenode
节点执行如下命令进行格式化:
1 2 |
sudo -u hdfs hdfs namenode -format |
6.启用回收站
默认情况下,回收站功能是关闭的,如需打开需要单独进行设置。
启用后,使用Hadoop shell进行文件删除时会将文件移动到该用户的.Trash目录中
在HDFS服务端的core-site.xml
文件中加入如下内容:
1 2 3 4 5 |
<property> <name>fs.trash.interval</name> <value>1440</value> </property> |
单位为分钟,该设置代表回收站功能启动,并且会在24小时后删除回收站的内容
7.为DataNode节点设置存储均衡
DataNode默认会按照轮询的方式来写入新block的副本,可以通过设置容量选择策略来使DataNode知道磁盘的可用容量以便决定存储位置。
编辑hdfs-site.xml
文件,加入如下内容进行设置:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<property> <name>dfs.datanode.fsdataset.volume.choosing.policy</name> <value>org.apache.hadoop.hdfs.server.datanode.fsdataset.AvailableSpaceVolumeChoosingPolicy</value> </property> <property> <name>dfs.datanode.available-space-volume-choosing-policy.balanced-space-threshold</name> <value>10737418240</value> </property> <property> <name>dfs.datanode.available-space-volume-choosing-policy.balanced-space-preference-fraction</name> <value>0.75</value> </property> |
8.启用WebHDFS
在hdfs-site.xml
中加入如下内容:
1 2 3 4 5 |
<property> <name>dfs.webhdfs.enabled</name> <value>true</value> </property> |
默认情况下,用户名的规则为:
1 2 |
^[A-Za-z_][A-Za-z0-9._-]*[$]?$ |
改为如下规则可以在WebHDFS中启用数字用户名:
1 2 3 4 5 |
<property> <name>dfs.webhdfs.user.provider.user.pattern</name> <value>^[A-Za-z0-9_][A-Za-z0-9._-]*[$]?$</value> </property> |
9.设置LZO
在core-site.xml
文件中加入如下内容:
1 2 3 4 5 |
<property> <name>io.compression.codecs</name> <value>org.apache.hadoop.io.compress.DefaultCodec,org.apache.hadoop.io.compress.GzipCodec, org.apache.hadoop.io.compress.BZip2Codec,com.hadoop.compression.lzo.LzoCodec, com.hadoop.compression.lzo.LzopCodec,org.apache.hadoop.io.compress.SnappyCodec</value> </property> |
10.启动HDFS
下面需要在集群中部署配置文件,在dev16上执行如下命令:
1 2 |
pdcp -w dev[17-21] -r /etc/hadoop/conf.dev /etc/hadoop/ |
在所有节点上启动HDFS:
1 2 |
pdsh -w dev[16-21] 'for i in `cd /etc/init.d; ls hadoop-hdfs-*`;do service $i start;done' |
在HDFS中创建/tmp文件夹:
1 2 |
sudo -u hdfs hadoop fs -mkdir /tmp |
修改/tmp目录的权限:
1 2 |
sudo -u hdfs hadoop fs -chmod -R 1777 /tmp |
查看HDFS中文件信息:
1 2 |
hadoop fs -ls -R / |
通过Web界面查看HDFS的详细信息:
1 2 |
http://dev16:50070 |
七、在集群中部署MapReduce v2(YARN)
1.配置YARN的参数
修改mapred-site.xml
文件,并加入如下内容:
1 2 3 4 5 |
<property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> |
2.配置YARN的后台驻留程序:
修改yarn-site.xml
文件,并加入如下内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
<property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.resourcemanager.hostname</name> <value>dev16.yonyou.com</value> </property> <property> <description>Classpath for typical applications.</description> <name>yarn.application.classpath</name> <value> $HADOOP_CONF_DIR, $HADOOP_COMMON_HOME/*, $HADOOP_COMMON_HOME/lib/*, $HADOOP_HDFS_HOME/*, $HADOOP_HDFS_HOME/lib/*, $HADOOP_MAPRED_HOME/*, $HADOOP_MAPRED_HOME/lib/*, $HADOOP_YARN_HOME/*, $HADOOP_YARN_HOME/lib/* </value> </property> <property> <name>yarn.log.aggregation.enable</name> <value>true</value> </property> <property> <description>List of directories to store localized files in.</description> <name>yarn.nodemanager.local-dirs</name> <value>file:///data/1/yarn/local,file:///data/2/yarn/local,file:///data/3/yarn/local,file:///data/4/yarn/local</value> </property> <property> <description>Where to store container logs.</description> <name>yarn.nodemanager.log-dirs</name> <value>file:///data/1/yarn/logs,file:///data/2/yarn/logs,file:///data/3/yarn/logs,file:///data/4/yarn/logs</value> </property> <property> <description>Where to aggregate logs to.</description> <name>yarn.nodemanager.remote-app-log-dir</name> <value>hdfs://var/log/hadoop-yarn/apps</value> </property> |
需要在集群中所有节点创建yarn配置文件中设置的目录:
1 2 |
pdsh -w dev[16-21] mkdir -p /data/{1,2,3,4}/yarn/{local,logs} |
修改目录的所有者:
1 2 |
pdsh -w dev[16-21] chown -R yarn:yarn /data/{1,2,3,4}/yarn/{local,logs} |
3.配置History Server
在mapred-site.xml
中加入如下内容:
1 2 3 4 5 6 7 8 9 |
<property> <name>mapreduce.jobhistory.address</name> <value>dev17.yonyou.com:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>dev17.yonyou.com:19888</value> </property> |
在core-site.xml
中加入如下内容:
1 2 3 4 5 6 7 8 9 |
<property> <name>hadoop.proxyuser.mapred.groups</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.mapred.hosts</name> <value>*</value> </property> |
4.配置Staging目录
在mapred-site.xml
文件中加入如下内容:
1 2 3 4 5 |
<property> <name>yarn.app.mapreduce.am.staging-dir</name> <value>/user</value> </property> |
当HDFS正常启动后,可以手动在HDFS中创建该目录
5.将修改后的配置文件部署到整个集群
复制配置文件目录到集群中的其他节点:
1 2 |
pdcp -w dev[17-21] -r /etc/hadoop/conf.dev /etc/hadoop/ |
6.在集群中的每个节点启动HDFS
1 2 |
pdsh -w dev[16-21] 'for i in `cd /etc/init.d; ls hadoop-hdfs-*`;do service $i restart;done' |
7.如果HDFS中没有/tmp目录,需要手动创建
在HDFS中创建/tmp文件夹:
1 2 |
sudo -u hdfs hadoop fs -mkdir /tmp |
修改/tmp目录的权限:
1 2 |
sudo -u hdfs hadoop fs -chmod -R 1777 /tmp |
查看HDFS中的文件信息:
1 2 |
hadoop fs -ls -R / |
8.创建history目录并设置权限
通过如下命令创建history
并设置正确的权限:
1 2 3 4 |
sudo -u hdfs hadoop fs -mkdir -p /user/history sudo -u hdfs hadoop fs -chmod -R 1777 /user/history sudo -u hdfs hadoop fs -chown mapred:hadoop /user/history |
9.在HDFS中创建log目录
在HDFS中创建/var/log/hadoop-yarn目录并设置所有者:
1 2 3 |
sudo -u hdfs hadoop fs -mkdir -p /var/log/hadoop-yarn sudo -u hdfs hadoop fs -chown yarn:mapred /var/log/hadoop-yarn |
10.查看HDFS中的目录结构
执行如下命令:
1 2 |
hadoop fs -ls -R / |
可以看到输出的结果为:
1 2 3 4 5 6 7 8 |
[root@dev16 conf.dev]# hadoop fs -ls -R / drwxrwxrwt - hdfs hadoop 0 2014-05-09 15:20 /tmp drwxr-xr-x - hdfs hadoop 0 2014-05-13 11:00 /user drwxrwxrwt - mapred hadoop 0 2014-05-13 11:00 /user/history drwxr-xr-x - hdfs hadoop 0 2014-05-13 11:18 /var drwxr-xr-x - hdfs hadoop 0 2014-05-13 11:18 /var/log drwxr-xr-x - yarn mapred 0 2014-05-13 11:18 /var/log/hadoop-yarn |
11.启动YARN和MapReduce JobHistory Server
要启动YARN,需要先启动ResourceManager
和NodeManager
服务。
在dev16
节点上启动ResourceManager服务:
1 2 |
service hadoop-yarn-resourcemanager start |
在所有DataNode节点上启动NodeManager服务:
1 2 |
pdsh -w dev[17-21] service hadoop-yarn-nodemanager start |
在dev17
节点启动JobHistory服务:
1 2 |
pdsh -w dev17 service hadoop-mapreduce-historyserver start |
12.给每一个MapReduce用户创建该用户的home目录:
在NameNode节点给每一个需要使用MapReduce的用户创建各自的目录(下述命令中的代表Linux系统中的用户名):
1 2 3 |
sudo -u hdfs hadoop fs -mkdir /user/<user> sudo -u hdfs hadoop fs -chown <user> /user/<user> |
13.CDH的启动顺序
CDH需要按照固定顺序启动或停止服务,以保证所有服务都能正常运行或关闭。
顺序 | 服务名称 |
---|---|
1 | ZooKeeper |
2 | HDFS |
3 | HttpFS |
4 | YARN |
5 | HBase |
6 | Hive |
7 | Oozie |
8 | Flume |
9 | Sqoop |
10 | Hue |
14.设置开机启动
暂时保留
15.提高性能
a.禁用Transparent Hugepage Compaction
大部分被CDH 5支持的Linux平台都包含了一个特性,叫做Transparent Hugepage Compaction
,这个特性会降低Hadoop的工作负载,并且会显著的降低性能。
症状 :使用top
等监控工具会发现system CPU
使用占很大的百分比,如果system CPU
的使用超过30%或更多,你很可能就遇到了这个问题。
解决办法 :
查看transparent hugepage compaction
是否被启用,如果显示[always],则表示该特性已被启用:
1 2 3 |
[root@h1 hadoop-mapreduce]# cat /sys/kernel/mm/redhat_transparent_hugepage/defrag [always] never |
要禁用transparent hugepage compaction
,需要将如下命令添加到/etc/rc.local
文件中:
1 2 |
echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag |
如果在命令行中执行这条指令,则会立即生效,但重启之后会恢复到默认状态。
在集群中执行如下命令:
1 2 3 4 |
pdsh -w h[1-4] 'echo "echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag" >> /etc/rc.local' pdsh -w h[1-4] 'echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag' pdsh -w h[1-4] 'cat /sys/kernel/mm/redhat_transparent_hugepage/defrag' |
b.设置Linux内核参数vm.swappiness
Linux内核参数vm.swappiness
用来控制将内存页面写入硬盘的频繁程度。它的值可以设置为0-100,值越高意味着内核会越主动的寻找不活跃的内存页面并将它们写入硬盘。
可以通过如下命令来查看vm.swappiness
当前的值:
1 2 |
cat /proc/sys/vm/swappiness |
在大多数系统中,vm.swappiness
的默认值为60,这样设置并不适用于Hadoop集群节点,因为这可能导致进程在还有剩余内存时就开始swap,这会影响系统的稳定性和性能。
建议将vm.swappiness
的值设置为0:
1 2 |
pdsh -w h[1-4] 'sysctl -w vm.swappiness=0' |
c.提高Shuffle Handler和IFile Reader的性能
Shuffle Handler
你可以通过启用shuffle readahead
来提高Mapreduce的Shuffle Handler的性能,这会使TaskTracker
或NodeManager
在将map的输出通过socket传递给reducer之前提前获得输出的内容。
为了在YARN中启用这个特性,需要将mapreduce.shuffle.manage.os.cache
的值设置为true
,为了更好的调试性能,可以对mapreduce.shuffle.readahead.bytes
的值进行调整,该值默认为4MB。
IFile Reader
启用IFile readahead
来提高merge
操作的性能,为启用这个特性需要将mapreduce.ifile.readahead
的值设置为true
,为了更好的调试性能,可以对mapreduce.ifile.readahead.bytes
的值进行调整,该值默认为4MB。
1 2 3 4 5 6 7 8 9 |
<property> <name>mapreduce.shuffle.manage.os.cache</name> <value>true</value> </property> <property> <name>mapreduce.ifile.readahead</name> <value>true</value> </property> |
在实际使用中发现如果将值设置为4MB会导致nodemanager无法启动,故从设置项中去除
d.MapReduce配置的最佳实践
这些在mapred-site.xml
文件中的配置可以减少MapReduce在执行时的内部等待时间。
task结束时尽可能快的发送心跳
设置mapreduce.tasktracker.outofband.heartbeat
为true
可以使TaskTracker
在task完成后发送心跳,以便减少等待时间,该参数的默认值为false
。
在mapred-site.xml
中加入如下内容:
1 2 3 4 5 |
<property> <name>mapreduce.tasktracker.outofband.heartbeat</name> <value>true</value> </property> |
在单节点系统中减少JobClient状态报告的间隔时间
jobclient.progress.monitor.poll.interval
定义了以微秒为单位的JobClient状态报告时间,默认值为1000微秒,在单节点系统中可以将该值调小以便加快系统响应,但在大型生产环境集群中调小这个值将会导致服务器和客户端之间的网络堵塞。
1 2 3 4 5 |
<property> <name>jobclient.progress.monitor.poll.interval</name> <value>10</value> </property> |
调节JobTracker的心跳周期
调小TaskTracker
到JobTracker
的最小心跳时间会在小型集群中提高MapReduce的性能。
1 2 3 4 5 |
<property> <name>mapreduce.jobtracker.heartbeat.interval.min</name> <value>10</value> </property> |
立即启动MapReduce的JVM
mapred.reduce.slowstart.completed.maps
属性定义了在一个job
中Map task
必须先于Reduce task
执行完成的比例。在一些小任务中需要快速响应,将这个值设置为0会提高性能,较大的值(比如50%)更适合大型的任务。
1 2 3 4 5 |
<property> <name>mapred.reduce.slowstart.completed.maps</name> <value>0</value> </property> |
e.HDFS配置的最佳实践
本节提到的内容均在
hdfs-site.xml
文件中进行配置。
提高本地读的性能
本地读(local reads)也被称为短路读(short-circuit local reads),这个属性对HBase和Impala来说都可以提高读取数据的速度。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<property> <name>dfs.client.read.shortcircuit</name> <value>true</value> </property> <property> <name>dfs.client.read.shortcircuit.streams.cache.size</name> <value>1000</value> </property> <property> <name>dfs.client.read.shortcircuit.streams.cache.size.expiry.ms</name> <value>1000</value> </property> <property> <name>dfs.domain.socket.path</name> <value>/var/run/hadoop-hdfs/dn._PORT</value> </property> |
f.部署修改后的配置文件并重启所有服务
部署修改后的配置文件:
1 2 |
pdcp -w dev[17-21] -r /etc/hadoop/conf.dev /etc/hadoop/ |
重启所有服务:
1 2 3 4 5 |
pdsh -w dev[16-21] 'for i in `cd /etc/init.d; ls hadoop-hdfs-*`;do service $i restart;done' service hadoop-yarn-resourcemanager restart pdsh -w dev[17-21] service hadoop-yarn-nodemanager restart pdsh -w dev17 service hadoop-mapreduce-historyserver restart |
八、CDH中使用的Hadoop用户
Project | User | Group | Comment |
---|---|---|---|
Apache Flume | flume | flume | This user must have write privileges in HDFS. |
Apache HBase | hbase | hbase | |
HDFS | hdfs | hdfs | |
Apache Hive | hive | hive |
九、安装Crunch
在所有节点上安装Crunch:
1 2 |
pdsh -w dev[16-21] yum -y install crunch crunch-doc |
十、安装Flume
在所有节点安装flume相关的软件包:
1 2 |
pdsh -w dev[16-21] yum -y install flume-ng flume-ng-agent flume-ng-doc |
复制flume的配置文件:
1 2 3 |
cp /etc/flume-ng/conf/flume-conf.properties.template /etc/flume-ng/conf/flume.conf cp /etc/flume-ng/conf/flume-env.sh.template /etc/flume-ng/conf/flume-env.sh |
复制flume配置文件到集群的其他节点:
1 2 |
pdcp -w dev[17-21] -r /etc/flume-ng/conf/* /etc/flume-ng/conf/ |
验证安装是否成功:
1 2 |
flume-ng help |
启动、停止、重启Flume的命令:
1 2 |
service flume-ng-agent <start | stop | restart> |
十一、安装HBase
1.安装HBase的软件包
在dev16
节点上安装hbase:
1 2 |
yum install hbase |
查看已经安装的hbase相关文件:
1 2 |
rpm -ql hbase |
2.配置HBase
a. 使用DNS来进行节点间的访问
b.使用NTP来同步时间(Network Time Protocol)
c.增大用户打开文件数量的上限
d.设置HDFS可同时打开的文件数量上限
在/etc/hadoop/conf.dev/hdfs-site.xml
中加入如下内容:
1 2 3 4 5 |
<property> <name>dfs.datanode.max.xcievers</name> <value>4096</value> </property> |
将修改后的hdfs-site.xml
文件分发到所有节点:
1 2 |
pdcp -w dev[17-21] /etc/hadoop/conf.dev/hdfs-site.xml /etc/hadoop/conf.dev/ |
重启所有节点的HDFS服务:
1 2 |
pdsh -w dev[16-21] 'for i in `cd /etc/init.d; ls hadoop-hdfs-*`;do service $i restart;done' |
3.在独立运行模式下启动HBase
在dev16
节点安装HBase Master:
1 2 |
yum install hbase-master |
启动HBase Master:
1 2 |
service hbase-master start |
4.安装并启动HBase Thrift Server
在dev16
节点安装Thrift
:
1 2 |
yum install hbase-thrift |
启动hbase-thrift:
1 2 |
service hbase-thrift start |
5.安装并配置REST
在dev16
节点安装REST:
1 2 |
yum install hbase-rest |
启动hbase-rest:
1 2 |
service hbase-rest start |
REST默认使用8080端口,有可能与其他服务使用的端口发生冲突,如果希望使用其他端口,需要对hbase-site.xml进行修改,加入如下内容:
1 2 3 4 5 |
<property> <name>hbase.rest.port</name> <value>60050</value> </property> |
6.配置HBase为伪分布模式
先停止之前启动的hbase-master
:
1 2 |
service hbase-master stop |
a.修改HBase的配置
在hbase-site.xml
文件中加入如下内容:
1 2 3 4 5 6 7 8 9 |
<property> <name>hbase.cluster.distributed</name> <value>true</value> </property> <property> <name>hbase.rootdir</name> <value>hdfs://myhost:8020/hbase</value> </property> |
b.在HDFS中创建/hbase目录
在启动hbase-master
之前要先在HDFS中创建/hbase
目录,HBase Master使用hbase
权限运行,没有权限创建顶级目录,所以需要手动进行创建:
1 2 3 |
sudo -u hdfs hadoop fs -mkdir /hbase sudo -u hdfs hadoop fs -chown hbase /hbase |
c.为HBase的伪分布模式启动相关服务
a) 安装并启动ZooKeeper:
内容见安装ZooKeeper
b) 启动HBase Master:
1 2 |
service hbase-master start |
c) 安装并启动HBase RegionServer:
安装hbase-regionserver
:
1 2 |
yum install hbase-regionserver |
启动hbase-regionserver
:
1 2 |
service hbase-regionserver start |
d.验证伪分布模式的操作
使用jps命令来查看已经启动的服务:
1 2 3 4 5 6 7 8 9 10 11 |
[root@dev16 conf]# jps 4748 RunJar 13627 HMaster 13491 QuorumPeerMain 14139 Jps 11949 RESTServer 13845 HRegionServer 6026 NameNode 11776 ThriftServer 29544 ResourceManager |
e.安装并启动HBase Thrift Server
Thrift可以与region server一起运行,但是不应该与NameNode和JobTracker一起运行。
安装hbase-thrift
:
1 2 |
yum install hbase-thrift |
启动hbase-thrift:
1 2 |
service hbase-thrift start |
7.在集群中部署HBase
a.选择在什么地方部署HBase的进程
在小型集群中,可将HBase Master与NameNode和JobTracker放在同一个节点,该节点作为HBase的主节点,集群中的其他已经安装DataNode和TaskTracker的节点作为HBase的slave节点,在slave节点上安装RegionServer。
b.配置分布式集群
在所有安装了DataNode的节点上安装RegionServer、Thrift和REST:
1 2 |
pdsh -w dev[17-21] yum -y install hbase hbase-regionserver hbase-thrift hbase-rest |
将HBase的配置文件部署到所有节点:
1 2 |
pdcp -w dev[17-21] /etc/hbase/conf/* /etc/hbase/conf/ |
在所有slave节点启动RegionServer
、Thrift
和REST
:
1 2 3 4 |
pdsh -w dev[17-21] service hbase-regionserver start pdsh -w dev[17-21] service hbase-thrift start pdsh -w dev[17-21] service hbase-rest start |
通过HBase Master的Web页面查看HBase的集群运行情况,在浏览器中打开http://dev16:60010
,可以看到所有Slave节点已经被识别。
十二、安装HCatalog
1.安装WebHCat REST Server
在dev16
节点安装WebHCat REST Server:
1 2 |
yum install hive-webhcat-server |
在所有节点上安装hcatalog:
1 2 |
pdsh -w dev[16-21] yum -y install hive-hcatalog |
在hive-site.xml
文件中加入如下内容:
1 2 3 4 5 |
<property> <name>hive.metastore.uris</name> <value>thrift://dev16.yonyou.com:9083</value> </property> |
将hive-site.xml
文件部署到所有安装了hcatalog的节点:
1 2 |
pdcp -w dev[17-21] hive-site.xml /etc/hive/conf/ |
启动和停止WebHCat REST Server
1 2 3 |
service hive-webhcat-server start service hive-webhcat-server stop |
十三、安装Hive
1.安装Hive
Hive可以安装在独立的服务器上,不是必须安装在Hadoop集群中。如果需要使用HCatalog,则需要单独安装。
在dev16
节点安装Hive相关的软件包:
1 2 |
yum install hive hive-metastore hive-server2 hive-hbase mysql |
2.配置Metastore Database
a.安装并启动MySQL
在dev17
节点安装MySQL:
1 2 |
yum -y install mysql-server |
修改/etc/my.cnf
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
[mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql symbolic-links=0 character_set_server=utf8 [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid [client] default-character-set=utf8 |
启动mysql-server
:
1 2 |
service mysqld start |
b.配置MySQL服务和连接器
在dev17
节点安装MySQL connector:
1 2 |
yum install mysql-connector-java |
设置软链接到hive目录:
1 2 |
ln -s /usr/share/java/mysql-connector-java.jar /usr/lib/hive/lib/mysql-connector-java.jar |
设置MySQL的root密码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
$ /usr/bin/mysql_secure_installation [...] Enter current password for root (enter for none): OK, successfully used password, moving on... [...] Set root password? [Y/n] y New password: Re-enter new password: Remove anonymous users? [Y/n] Y [...] Disallow root login remotely? [Y/n] N [...] Remove test database and access to it [Y/n] Y [...] Reload privilege tables now? [Y/n] Y All done! |
设置MySQL开机启动:
1 2 |
chkconfig mysqld on |
查看设置结果:
1 2 3 |
[root@dev17 hbase]# chkconfig --list mysqld mysqld 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭 |
创建数据库和用户:
1 2 3 4 5 6 |
$ mysql -u root -p Enter password: mysql> CREATE DATABASE metastore; mysql> USE metastore; mysql> SOURCE /usr/lib/hive/scripts/metastore/upgrade/mysql/hive-schema-0.12.0.mysql.sql; |
创建MySQL的hive用户,并设置用户权限:
1 2 3 4 5 6 7 8 9 10 11 12 |
mysql> create user 'hive'@'dev16.yonyou.com' identified by 'udh*123'; Query OK, 0 rows affected (0.00 sec) mysql> revoke all privileges, grant option from 'hive'@'dev16.yonyou.com'; Query OK, 0 rows affected (0.00 sec) mysql> grant select,insert,update,delete,lock tables,execute on metastore.* to 'hive'@'dev16.yonyou.com'; Query OK, 0 rows affected (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) |
设置Metastore服务连接MySQL数据库:
修改/etc/hive/conf/hive-site.xml
文件,加入如下内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
<property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://dev17.yonyou.com/metastore</value> <description>the URL of the MySQL database</description> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>hive</value> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>udh*123</value> </property> <property> <name>datanucleus.autoCreateSchema</name> <value>false</value> </property> <property> <name>datanucleus.fixedDatastore</name> <value>true</value> </property> <property> <name>datanucleus.autoStartMechanism</name> <value>SchemaTable</value> </property> <property> <name>hive.metastore.uris</name> <value>thrift://dev16.yonyou.com:9083</value> <description>IP address (or fully-qualified domain name) and port of the metastore host</description> </property> |
c.配置HiveServer2
a) 配置表锁管理器
修改/etc/hive/conf/hive-site.xml
文件,加入如下内容:
1 2 3 4 5 6 7 8 9 10 11 |
<property> <name>hive.support.concurrency</name> <description>Enable Hive's Table Lock Manager Service</description> <value>true</value> </property> <property> <name>hive.zookeeper.quorum</name> <description>Zookeeper quorum used by Hive's Table Lock Manager</description> <value>dev16.yonyou.com,dev17.yonyou.com,dev18.yonyou.com,dev19.yonyou.com,dev20.yonyou.com,dev21.yonyou.com</value> </property> |
d.为YARN配置HiveServer2
需要在/etc/default/hive-server2
文件中设置HADOOP_MAPRED_HOME
环境变量:
1 2 |
export HADOOP_MAPRED_HOME=/usr/lib/hadoop-mapreduce |
e.启动Metastore
在remote模式中,需要在HiveServer2之前启动metastore。
启动metastore
:
1 2 |
service hive-metastore start |
f.设置文件权限
Hive的数据存储在HDFS中,默认情况下存储在/user/hive/warehouse
文件夹中,如果/user/hive
和/user/hive/warehouse
文件夹不存在则需要手动创建。
1 2 3 |
sudo -u hdfs hadoop fs -mkdir -p /user/hive/warehouse sudo -u hdfs hadoop fs -chown -R hive /user/hive |
查看HDFS中Hive的warehouse文件夹信息:
1 2 3 4 5 6 7 |
[root@dev16 conf]# sudo -u hdfs hadoop fs -ls -R /user drwxrwxrwt - mapred hadoop 0 2014-05-13 14:24 /user/history drwxrwx--- - mapred hadoop 0 2014-05-13 14:24 /user/history/done drwxrwxrwt - mapred hadoop 0 2014-05-13 14:24 /user/history/done_intermediate drwxr-xr-x - hive hadoop 0 2014-05-15 23:32 /user/hive drwxr-xr-x - hive hadoop 0 2014-05-15 23:32 /user/hive/warehouse |
g.启动、停止和使用HiveServer2
启动HiveServer2
:
1 2 |
service hive-server2 start |
验证HiveServer2
是否已经正常启动:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
[root@dev16 conf]# /usr/lib/hive/bin/beeline Beeline version 0.12.0-cdh5.0.0 by Apache Hive beeline> !connect jdbc:hive2://localhost:10000 hive udh*123 scan complete in 5ms Connecting to jdbc:hive2://localhost:10000 Connected to: Apache Hive (version 0.12.0-cdh5.0.0) Driver: Hive JDBC (version 0.12.0-cdh5.0.0) Transaction isolation: TRANSACTION_REPEATABLE_READ 0: jdbc:hive2://localhost:10000> show tables . . . . . . . . . . . . . . . .> ; +-----------+ | tab_name | +-----------+ +-----------+ No rows selected (1.729 seconds) 0: jdbc:hive2://localhost:10000> |
h.在客户端安装Hive JDBC
安装hive-jdbc
:
1 2 |
yum install hive-jdbc |
将/usr/lib/hive/lib/*.jar
和/usr/lib/hadoop/*.jar
添加至classpath。
i.设置HADOOP_MAPRED_HOME
1 2 |
export HADOOP_MAPRED_HOME=/usr/lib/hadoop-mapreduce |
十四、安装Impala
Impala由以下几部分组成:
- impalad -基于HDFS和HBase的数据进行查询的计划和执行。安装在集群中每个datanode节点上。
- statestored –
- catalogd –
- impala-shell –
1.安装Impala的相关软件包
在安装Impala之前,确保Hive已经安装完成,并在/etc/hive/conf/hive-site.xml
文件中已加入如下内容:
1 2 3 4 5 6 7 8 9 |
<property> <name>hive.metastore.uris</name> <value>thrift://dev16.yonyou.com:9083</value> </property> <property> <name>hive.metastore.client.socket.timeout</name> <value>3600</value> </property> |
建议不要再NameNode节点安装Impala,否则可能会出现内存竞争等问题。
在所有DataNode节点安装Impala:
1 2 |
pdsh -w dev[17-21] yum -y install impala impala-server impala-state-store impala-catalog |
在包括NameNode节点的所有节点安装impala-shell:
1 2 |
pdsh -w dev[16-21] yum -y install impala-shell |
2.配置Impala
a.配置短路读:
在dev16
节点中修改/etc/hadoop/conf/hdfs-site.xml
文件,加入如下内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<property> <name>dfs.client.read.shortcircuit</name> <value>true</value> </property> <property> <name>dfs.domain.socket.path</name> <value>/var/run/hadoop-hdfs/dn._PORT</value> </property> <property> <name>dfs.client.file-block-storage-locations.timeout</name> <value>10000</value> </property> |
修改/var/run/hadoop-hdfs
文件夹的权限为775,所属组为root:
1 2 3 |
pdsh -w dev[17-21] chown hdfs:root /var/run/hadoop-hdfs pdsh -w dev[17-21] chmod 775 /var/run/hadoop-hdfs |
b.配置Block位置追踪
为了启动Block位置追踪,需要在hdfs-site.xml中添加如下内容:
1 2 3 4 5 |
<property> <name>dfs.datanode.hdfs-blocks-metadata.enabled</name> <value>true</value> </property> |
将/etc/hadoop/conf/hdfs-site.xml
文件分发到集群中的其他节点:
1 2 |
pdcp -w dev[17-21] /etc/hadoop/conf/hdfs-site.xml /etc/hadoop/conf/ |
复制hive-site.xml
、core-site.xml
、hdfs-site.xml
到Impala的配置文件目录/etc/impala/conf
:
1 2 3 4 |
pdcp -w dev[17-21] /etc/hive/conf/hive-site.xml /etc/impala/conf/ pdcp -w dev[17-21] /etc/hadoop/conf/core-site.xml /etc/impala/conf/ pdcp -w dev[17-21] /etc/hadoop/conf/hdfs-site.xml /etc/impala/conf/ |
重启所有的DataNode服务:
1 2 |
pdsh -w dev[17-21] service hadoop-hdfs-datanode restart |
配置Impala启动项:
修改impala所有节点中的/etc/default/impala
文件,指定impala-catalog
和impala-state-store
的服务器名称:
1 2 |
pdsh -w 'dev[17-21]' sed -i 's#127.0.0.1#dev16.yonyou.com#' /etc/default/impala |
3.启动Impala
在dev16
节点启动impala-state-store
:
1 2 |
service impala-state-store start |
在dev16
节点启动impala-catalog
:
1 2 |
service impala-catalog start |
在所有DataNode
节点启动impala-server
:
1 2 |
pdsh -w dev[17-21] service impala-server start |
4.使用impala-shell
1 2 |
impala-shell -i dev17 |
十五、安装HttpFS
1.安装HttpFS
在dev16
节点安装HttpFS:
1 2 |
yum -y install hadoop-httpfs |
2.配置HttpFS
文件类型 | 安装位置 |
---|---|
二进制文件 | /usr/lib/hadoop-httpfs |
配置文件 | /etc/hadoop-httpfs/conf |
文档 | /usr/share/doc/packages/hadoop-httpfs |
数据 | /var/lib/hadoop-httpfs |
日志 | /var/log/hadoop-httpfs |
临时文件 | /var/tmp/hadoop-httpfs |
pid文件 | /var/run/hadoop-httpfs |
编辑core-site.xml
文件并加入如下内容:
1 2 3 4 5 6 7 8 9 |
<property> <name>hadoop.proxyuser.httpfs.hosts</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.httpfs.groups</name> <value>*</value> </property> |
复制配置文件到集群中的其他节点:
1 2 |
pdcp -w dev[17-21] -r /etc/hadoop/conf.dev /etc/hadoop/ |
重启HDFS:
1 2 |
pdsh -w dev[16-21] 'for i in `cd /etc/init.d; ls hadoop-hdfs-*`;do service $i restart;done' |
3.启动HttpFS
启动HttpFS:
1 2 |
service hadoop-httpfs start |
HttpFS默认使用14000端口,调用的URL如下:
1 2 |
http://<HTTPFS_HOSTNAME>:14000/webhdfs/v1 |
使用curl调用HttpFS服务:
1 2 |
curl "http://localhost:14000/webhdfs/v1?op=gethomedirectory&user.name=hive" |
十六、安装Oozie
1.安装Oozie的软件包
在dev16
节点安装Oozie Server:
1 2 |
yum -y install oozie |
在其他DataNode节点安装Oozie Client:
1 2 |
pdsh -w dev[17-21] yum -y install oozie-client |
2.配置Oozie
安装Oozie后,Oozie Server会在系统中创建所有配置文件、文档和运行时文件。
文件类型 | 文件位置 |
---|---|
二进制文件 | /usr/lib/oozie |
配置文件 | /etc/oozie/conf |
文档 | /usr/share/doc/oozie |
示例 tar.gz | /usr/share/doc/oozie |
sharelib tar.gz | /usr/lib/oozie |
数据 | /var/lib/oozie |
日志 | /var/log/oozie |
临时文件 | /var/tmp/oozie |
pid文件 | /var/run/oozie |
3.配置Oozie使用MySQL数据库
在安装Hive过程中已经在dev17
节点安装过mysql服务,可以直接使用dev17
的MySQL。
在dev17
节点登录MySQL,并创建Oozie数据库:
1 2 3 4 5 6 |
mysql> create database oozie; Query OK, 1 row affected (0.00 sec) mysql> grant all privileges on oozie.* to 'oozie'@'%' identified by 'oozie'; Query OK, 0 rows affected (0.10 sec) |
修改oozie-site.xml
文件,并加入如下内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<property> <name>oozie.service.JPAService.jdbc.driver</name> <value>com.mysql.jdbc.Driver</value> </property> <property> <name>oozie.service.JPAService.jdbc.url</name> <value>jdbc:mysql://dev17:3306/oozie</value> </property> <property> <name>oozie.service.JPAService.jdbc.username</name> <value>oozie</value> </property> <property> <name>oozie.service.JPAService.jdbc.password</name> <value>oozie</value> </property> |
拷贝或者软链接MySQL JDBC驱动的jar包到/var/lib/oozie/
目录
1 2 |
ln -s /usr/share/java/mysql-connector-java.jar /var/lib/oozie/mysql-connector-java.jar |
4.创建Oozie的数据库表
以oozie
用户的身份执行Oozie的数据库工具:
1 2 |
sudo -u oozie /usr/lib/oozie/bin/ooziedb.sh create -run |
十六、安装Hue
1.安装Hue的安装包
在dev16
节点安装hue:
1 2 |
yum install hue |
2.Hue的依赖关系:
组件 | 是否必须 | 应用程序 |
---|---|---|
HDFS | Yes | Core,File Browser |
MapReduce | No | Job Browser, Job Designer, Oozie, Hive Editor, Pig, Sqoop |
YARN | No | Job Browser, Job Designer, Oozie, Hive Editor, Pig, Sqoop |
Oozie | Yes | Job Designer, Oozie Editor/Dashboard |
Hive | Yes | Hive Editor, Metastore Tables |
Impala | No | Impala Editor, Metastore Tables |
HBase | No | HBase Browser |
Pig | No | Pig Editor, Oozie |
Search | No | Solr Search |
Spark | No | Spark |
Sqoop | No | Oozie |
Sqoop 2 | No | Sqoop Transfer |
ZooKeeper | No | ZooKeeper |
3.为Hue配置CDH组件
a.配置WebHDFS或HttpFS
WebHDFS和HttpFS都使用HTTP REST API,所以这两种方式都可以使用,但是Hue必须被配置成其中一种方式。如果想使用HDFS的HA(高可用),则必须使用HttpFS。
1.配置WebHDFS时要做如下设置:
为使NameNode和DataNode中启用WebHDFS,需要在所有节点的hdfs-site.xml
文件中加入如下内容:
1 2 3 4 5 |
<property> <name>dfs.webhdfs.enabled</name> <value>true</value> </property> |
重启所有HDFS服务:
1 2 |
pdsh -w dev[16-21] 'for i in `cd /etc/init.d; ls hadoop-hdfs-*`;do service $i restart;done' |
2.配置Hue为所有其他用户和组的代理用户,意味着hue可以代表所有其他用户提交请求:
WebHDFS:在core-site.xml
文件中加入如下内容:
1 2 3 4 5 6 7 8 9 |
<property> <name>hadoop.proxyuser.hue.hosts</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.hue.groups</name> <value>*</value> </property> |
HttpFS:确定/etc/hadoop-httpfs/conf/httpfs-site.xml
已添加以下内容:
1 2 3 4 5 6 7 8 9 |
<property> <name>httpfs.proxyuser.hue.hosts</name> <value>*</value> </property> <property> <name>httpfs.proxyuser.hue.groups</name> <value>*</value> </property> |
内容添加后需要重启HttpFS后台服务。
3.确定core-site.xml
文件中包含如下内容:
1 2 3 4 5 6 7 8 9 |
<property> <name>hadoop.proxyuser.httpfs.hosts</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.httpfs.groups</name> <value>*</value> </property> |
添加后重启Hadoop。
4.使用root
权限修改hue.ini
文件中的hadoop.hdfs_clusters.default.webhdfs_url
属性指向WebHDFS或HttpFS。
1 2 3 4 5 |
[hadoop] [[hdfs_clusters]] [[[default]]] # Use WebHdfs/HttpFs as the communication mechanism. |
WebHDFS:
1 2 |
webhdfs_url=http://FQDN:50070/webhdfs/v1/ |
HttpFS:
1 2 |
webhdfs_url=http://FQDN:14000/webhdfs/v1/ |
十七、安装Presto
1.环境依赖
- Linux or Mac OS X
- Java 7, 64 bit
- Python 2.4+
2.安装Presto
将Presto的压缩包下载至dev16
节点的/opt
文件夹下:
1 2 3 |
cd /opt wget http://central.maven.org/maven2/com/facebook/presto/presto-server/0.70/presto-server-0.70.tar.gz |
解压Presto压缩包:
1 2 |
tar zxvf presto-server-0.70.tar.gz |
在/var
文件夹中创建Presto的数据存储目录,用于存储日志、本地元数据等:
1 2 |
mkdir -p /var/presto/data |
在presto的安装目录中创建etc
目录,etc
目录用来存储Presto的配置信息,如:Node Properties,JVM Config,Config Properties,Catalog Properties等:
1 2 |
mkdir -p /opt/presto-server-0.70/etc |
在etc
目录中创建etc/node.properties
文件,并加入如下内容:
node.id
在每个节点上都应保持唯一
1 2 3 4 |
node.environment=production node.id=presto-on-dev16 node.data-dir=/var/presto/data |
在etc
目录下创建etc/jvm.config
文件,并加入如下内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
-server -Xmx16G -XX:+UseConcMarkSweepGC -XX:+ExplicitGCInvokesConcurrent -XX:+CMSClassUnloadingEnabled -XX:+AggressiveOpts -XX:+HeapDumpOnOutOfMemoryError -XX:OnOutOfMemoryError=kill -9 %p -XX:PermSize=150M -XX:MaxPermSize=150M -XX:ReservedCodeCacheSize=150M -Xbootclasspath/p:/opt/presto-server-0.70/lib/floatingdecimal-0.1.jar |
在etc
目录中创建config.properties
文件,此文件定义了节点的角色,可以配置为Presto的coordinator,也可以配置为worker。
配置为coordinator时的文件内容如下,保存为config.properties
:
1 2 3 4 5 6 7 8 9 |
coordinator=true datasources=jmx http-server.http.port=8008 presto-metastore.db.type=h2 presto-metastore.db.filename=var/db/MetaStore task.max-memory=1GB discovery-server.enabled=true discovery.uri=http://dev16.yonyou.com:8008 |
配置为worker时的文件内容如下,保存为config.properties
:
1 2 3 4 5 6 7 8 |
coordinator=false datasources=jmx,hive http-server.http.port=8008 presto-metastore.db.type=h2 presto-metastore.db.filename=var/db/MetaStore task.max-memory=1GB discovery.uri=http://example.net:8008 |
在etc
目录中创建log.properties
文件,并加入如下内容:
1 2 |
com.facebook.presto=DEBUG |
在etc
目录中创建catalog
文件夹:
1 2 |
mkdir -p etc/catalog |
在etc/catalog
目录中创建jmx.properties
文件,并加入如下内容:
1 2 |
connector.name=jmx |
在etc/catalog
目录中创建hive.properties
文件,并加入如下内容:
1 2 3 |
connector.name=hive-cdh5 hive.metastore.uri=thrift://dev16.yonyou.com:9083 |
将presto的安装目录部署到其他节点上:
1 2 |
pdcp -w dev[17-21] -r /opt/presto-server-0.70 /opt/ |
删除所有worker节点上的coordinator配置文件:
1 2 |
pdsh -w dev[17-21] rm -f /opt/presto-server-0.70/etc/config.properties |
将所有worker节点上的配置文件config.properties_worker
更名为config.properties
:
1 2 |
pdsh -w dev[17-21] mv /opt/presto-server-0.70/etc/config.properties_worker /opt/presto-server-0.70/etc/config.properties |
3.安装Discovery Server
下载Discovery的安装包至dev16
节点的/opt
目录:
1 2 3 |
cd /opt wget http://central.maven.org/maven2/io/airlift/discovery/discovery-server/1.16/discovery-server-1.16.tar.gz |
解压discovery-server-1.16.tar.gz
:
1 2 |
tar zxvf discovery-server-1.16.tar.gz |
创建Discovery的data目录:
1 2 |
mkdir -p /var/presto-discovery-server/data |
在Discovery的安装目录中创建etc
目录:
1 2 |
mkdir -p /opt/discovery-server-1.16/etc |
在etc
目录中创建node.properties
文件,并加入如下内容:
需要注意的是
node.id
应为唯一的值
1 2 3 4 |
node.environment=production node.id=discovery-on-dev16 node.data-dir=/var/presto-discovery-server/data |
在etc
目录中创建jvm.config
文件,并加入如下内容:
1 2 3 4 5 6 7 8 |
-server -Xmx1G -XX:+UseConcMarkSweepGC -XX:+ExplicitGCInvokesConcurrent -XX:+AggressiveOpts -XX:+HeapDumpOnOutOfMemoryError -XX:OnOutOfMemoryError=kill -9 %p |
在etc
目录中创建config.properties
文件,并加入如下内容:
1 2 |
http-server.http.port=8411 |
在dev16
节点启动Discovery Server:
1 2 |
/opt/discovery-server-1.16/bin/launcher start |
在所有节点启动Presto:
1 2 |
pdsh -w dev[16-21] /opt/presto-server-0.70/bin/launcher start |
4.使用命令行访问Presto
在dev16
节点下载Presto的命令行工具至/opt/presto-server-0.70/bin
目录:
1 2 3 |
cd /opt/presto-server-0.70/bin wget http://central.maven.org/maven2/com/facebook/presto/presto-cli/0.70/presto-cli-0.70-executable.jar |
将jar包更名为presto:
1 2 |
mv presto-cli-0.68-executable.jar presto |
设置presto的权限为可执行:
1 2 |
chmod +x presto |
运行presto命令行工具:
1 |
./presto --server localhost:8008 --catalog hive --schema default |
近期评论