单机安装hadoop+hive+presto
系统环境
在个人笔记本上使用virtualbox虚拟机
os:centos -7.x86-64.everything.1611 ,内核 3.10.0-514.el7.x86_64
注:同样可以使用rhel7.3来安装。
内存:2.5 g,推荐内存4g,否则内存太少,运行得有点慢。
安装组件包括:
hadoop-2.8.0
apache-hive-2.1.1
presto-server-0.177
mysql-community-server-5.7.18-1.el7.x86_64
oracle jdk1.8.0_131
注: hadoop的命令,在2.8.0中推荐是以hadoop开头,而不是hdfs,后者是一个向下兼容的措施。
例如hdfs dfs -mkdir /test 在2.8.0中的写法就是
hadoop fs -mkdir /test
由于安装的时候,使用的是老的安装文档,所以依然使用hdfs。不过个人严重建议使用hadoop命令。
--------------------------
第一步:创建用户和配置网络,并配置ssh连接,关闭不必要功能
1.0 关闭不必要功能
注:这仅仅是一个测试环境,正式环境可能不能关闭防火墙和selinux
systemctl stop firewalld
systemctl disable firewalld ---禁止防火强开启启动
setenforce 0 -- 关闭selinux
修改/etc/selinux/config ,设定 SELINUX=disabled --测底关闭selinux
1.1 创建用户
创建用户hadoop,并以/home/hadoop作为所有组件的Home,java例外
1.2 修改网络配置
修改 /etc/hosts,内容如下:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.199 bigdata.lzf
1.3 配置ssh 连接
确保是在/home/hadoop目下,执行以下命令
- ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
- cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
- chmod 0600 ~/.ssh/authorized_keys
- 确认ssh bigdata.lzf 不需要输入任何密码
- 注:有的人使用dsa,这个看具体系统。
第二步:安装jdk
使用root的身份解压jdk到 /usr/local/jdk1.8.0_131
第三步:安装mysql
3,.1 下载安装
这个是使用root账户来安装的,并且使用rpm包安装。
由于这个版本默认已经安装了maridb,所以只能卸载默认安装的一些组件。
然后启动mysql
systemctl start mysqld
3.2 修改密码
由于是比较新的mysql版本,使用起来比较麻烦。按照以下步骤:
首先修改/etc/my.cnf ,添加: skip-grant-tables
mysql -u root
Use mysql;
update mysql.user set authentication_string=password(‘xxxxxx') where user='root';
commit;
flush privileges;
set password=password('xxxxxx');
3.3 创建库并授权
然后退出mysql,重新登录
mysql – u root -p
---以下几个步骤是为安装Hive准备
create database metastore;
grant all on metastore.* to 'root'@'%' identified by 'xxxxxx';
grant all on metastore.* to 'root'@'localhost' identified by 'xxxxxx';
grant all on metastore.* to 'root'@'bigdata.lzf' identified by 'xxxxxx';
第四步:安装hadoop
切换到hadoop用户。
解压hadoop包到/home/hadoop/hadoop-2.8.0
4.1 修改环境变量.bash_profile
export JAVA_HOME=/usr/local/jdk1.8.0_131
export HADOOP_HOME=/home/hadoop/hadoop-2.8.0
export HADOOP_CONF_DIR=/home/hadoop/hadoop-2.8.0/etc/hadoop
export HADOOP_YARN_HOME=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export PATH=$PATH:$HOME/.local/bin:$HOME/bin:$JAVA_HOME/bin:$HADOOP_HOME/bin
保存后,执行source .bash_profile
4.2 创建目录
mkdir -p /home/hadoop/hadoop/tmp
mkdir -p /home/hadoop/hadoop/hdfs
mkdir -p /home/hadoop/hadoop/hdfs/data
mkdir -p /home/hadoop/ hadoop/hdfs/name
进入目录 /home/hadoop/hadoop-2.8.0/etc/hadoop
如果没有以下列出的文件,需要把.template的复制为没有.template的文件
例如
cp mapred-site.xml.template mapred-site.xml
4.3 配置 hadoop-env.sh,yarn-env.sh,mapred-env.sh
分别在文件前面添加以下内容:
export JAVA_HOME=/usr/local/jdk1.8.0_131
4.4 配置 core-site.xml
<property>
<name>fs.defaultFS</name>
<value>hdfs://bigdata.lzf:9001</value>
<description>HDFS的URI,文件系统://namenode标识:端口号,默认是9000</description>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/data_hadoop/tmp</value>
<description>namenode上本地的hadoop临时文件夹</description>
</property>
<property>
<name>ipc.client.connect.max.retries</name>
<value>100</value>
<description>默认10次,现在配置100次</description>
</property>
<property>
<name>ipc.client.connect.retry.interval</name>
<value>10000</value>
<description>连接间隔1秒钟,默认是0.1秒</description>
</property>
--为了权限,例如通过beeline之类的通过访问,必须 参考 http://hadoop.apache.org/docs/r2.8.0/hadoop-project-dist/hadoop-common/Superusers.html
添加以下内容:
<property>
<name>hadoop.proxyuser.hadoop.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.hadoop.groups</name>
<value>*</value>
</property>
#这个是告诉hadoop集群,用户hadoop和组hadoop可以任意访问
4.5 配置hdfs-site.xml
<property>
<name> dfs.namenode.name.dir</name>
<value>/home/hadoop/data_hadoop/hdfs/name</value>
<description>namenode上存储hdfs名字空间元数据 </description>
</property>
<property>
<name> dfs.datanode.data.dir</name>
<value>/home/hadoop/data_hadoop/hdfs/data</value>
<description>datanode上数据块的物理存储位置</description>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
<description>副本个数,配置默认是3,应小于datanode机器数量</description>
</property>
<property>
<name>dfs.namenode.rpc-address</name>
<value>bigdata.lzf:9001</value>
<description>RPC address that handles all clients requests。有人说需要和fs.defaultFS 一样端口</description>
</property>
4.6 配置mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
4.7 配置yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>bigdata.lzf:8099</value>
<description>用于管理集群的资源,可以通过浏览器访问 </description>
</property>
<property>
<name>yarn.nodemanager.webapp.address</name>
<value>bigdata.lzf:8042</value>
<description>用于管理节点,可以通过浏览器访问 </description>
</property>
</configuration>
4.8 修改slaves
添加以下内容
bigdata.lzf
4.9 修改日志文件log4j.properties
添加内容如下:
log4j.logger.org.apache.hadoop.util.NativeCodeLoader=DEBUG
4.10 启动并验证
$HADOOP_HOME/bin/hdfs namenode –format --这个执行一次即可。
$HADOOP_HOME/sbin/start-dfs.sh
$HADOOP_HOME/sbin/start-yarn.sh
执行jps,至少应该看到以下内容:
- 13664 ResourceManager
- 13511 SecondaryNameNode
- 12523 DataNode
- 12396 NameNode
- 13789 NodeManager
然后使用telnet查看有关的端口,这里是8042,8099,9001
其中8042,8099可以通过浏览器查看:
最后,可以使用一些常见命令例如:
hdfs dfs -mkdir -p /tmp/imput
hdfs dfs -mkdir -p /tmp/output
注:/tmp/input 并非操作系统的路径,而是一个相对路径,相对于 dfs.datanode.data.dir 的路径,但并不可以直接查看。
hdfs dfs -ls /tmp --查看路径/tmp
hdfs dfs -lsr /tmp --查看路径/tmp下的 ,等同于 hdfs dfs -ls -R /tmp
第五步:安装hive2
presto需要用到metastore,所以必须安装hive,这个从最新的官方结构图可以看出。
5.1 下载解压
解压到/home/hadoop/apache-hive-2.1.1-bin
5.2 准备hdfs路径
hdfs dfs -mkdir -p /warehouse
hdfs dfs -mkdir -p /tmp/hive
hdfs dfs -chmod 773 /warehouse
hdfs dfs -chmod 773 /tmp/hive
注:目录叫什么无所谓,看个人喜好。
5.3 配置环境变量
export HIVE_HOME=/home/hadoop/apache-hive-2.1.1-bin
export HIVE_CONF_DIR=/home/hadoop/apache-hive-2.1.1-bin/conf
export HCAT_LOG_DIR=/home/hadoop/apache-hive-2.1.1-bin/hcatalog/sbin/logs
export PATH=$PATH:$HOME/.local/bin:$HOME/bin:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HIVE_HOME/bin
然后 source .bash_profile
5.4 修改各个配置文件
cd $HIVE_HOME/conf
-------------------------------------------------------------------------------
修改 hive-env.sh
---------------------------------------------------------------------------------
# 下面这个CLASSPATH貌似没有起到作用,不过不妨碍使用。
export CLASSPATH=/home/hadoop/apache-hive-2.1.1-bin/lib/log4j-slf4j-impl-2.4.1.jar
export JAVA_HOME=/usr/local/jdk1.8.0_131
export HADOOP_HOME=/home/hadoop/hadoop-2.8.0
export HIVE_HOME=/home/hadoop/apache-hive-2.1.1-bin
# Hive Configuration Directory can be controlled by:
export HIVE_CONF_DIR=/home/hadoop/apache-hive-2.1.1-bin/conf
-------------------------------------------------------------------------------
修改hive-site.xml
--------------------------------------------------------------------------------
先复制hive-default.xml -> hive-site.xml文件
<property>
<name>javax.jdo.option.ConnectionURL</name>
<!--<value>jdbc:derby:;databaseName=metastore_db;create=true</value>-->
<value>jdbc:mysql://bigdata.lzf:3306/metastore?=createDatabaseIfNotExist=true&useSSL=false</value>
<description>JDBC connect string for a JDBCmetastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<!--<value>org.apache.derby.jdbc.EmbeddedDriver</value>-->
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBCmetastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
<description>username to use against metastoredatabase</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>Bigdata_Master21C</value>
<description>连接my sql的用户的密码</description>
</property>
<property>
<name>hive.server2.thrift.port</name>
<value>10000</value>
</property>
<property>
<name>hive.server2.thrift.bind.host</name>
<value>bigdata.lzf</value>
<description>注意,这个是主机名称,并非有些文档误导的那样,后面还需要跟上hadoop(而是因为有的人的主机带有那个名称)</description>
</property>
<property>
<name>hive.server2.authentication</name>
<value>NONE</value>
<description>
Client authentication types.
NONE: no authentication check
LDAP: LDAP/AD based authentication
KERBEROS: Kerberos/GSSAPI authentication
CUSTOM: Custom authentication provider
(Use with property hive.server2.custom.authentication.class)
</description>
</property>
<property>
<name>hive.server2.enable.doAs</name>
<value>true</value>
</property>
<property>
<name>datanucleus.schema.autoCreateAll</name>
<value>false</value>
<description>自动创建metastore,不过看起来好像么有什么用</description>
</property>
<property>
<name>hive.server2.logging.operation.log.location</name>
<value>/home/hadoop/java_tmp/${user.name}/operation_logs</value>
<description>操作日志路径</description>
</property>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/warehouse</value>
</property>
<property>
<name>hive.exec.scratchdir</name>
<value>/tmp/hive</value>
</property>
<property>
<name>hive.querylog.location</name>
<!--<value>${system:java.io.tmpdir}/${system:user.name}</value>-->
<value>/log</value>
<description>有人这里使用hdfs路径,而2.8.0的默认路径是 </description>
</property>
<property>
<name>hive.metastore.uris</name>
<value>thrift://bigdata.lzf:9083</value>
<description>Thrift URI for the remote metastore. Used by metastore client to connect to remote metastore.</description>
</property>
<property>
<name>hive.server2.transport.mode</name>
<value>binary</value>
<description>
当为binary的时候,只是启动10000端口,反之启用10001端口。
</description>
</property>
最后,把 ${system:java.io.tmpdir} 替换为/home/hadoop/data_hive/java_io_temp (需要创建实际的目录)
在替换 ${system 为${
-----------------------------------------------------------------
修改hive-log4j2.properties
------------------------------------------------------------------
property.hive.log.dir = /home/hadoop/data_hive/java_io_temp/${sys:user.name}
注:已经涉及到许多${开头的变量,在实际环境请谨慎配置。
5.5 初始化
$HIVE_HOME/bin/schematool -dbType mysql -initSchema
如果成功,请登录mysql,查看metastore 库下是否有表,如果有就是成功了。
(表太多,只显示一部分)
mysql> show tables;
+---------------------------+
| Tables_in_metastore |
+---------------------------+
| AUX_TABLE |
| BUCKETING_COLS |
| CDS |
| COLUMNS_V2 |
| COMPACTION_QUEUE |
| COMPLETED_COMPACTIONS |
| COMPLETED_TXN_COMPONENTS |
| DATABASE_PARAMS |
| DBS |
| DB_PRIVS |
| DELEGATION_TOKENS |
| FUNCS |
| FUNC_RU |
| GLOBAL_PRIVS |
| HIVE_LOCKS |
| IDXS |
| INDEX_PARAMS |
| KEY_CONSTRAINTS |
| MASTER_KEYS |
| NEXT_COMPACTION_QUEUE_ID |
| NEXT_LOCK_ID |
| NEXT_TXN_ID |
5.6 验证
先启动
hive --service metastore
hive --service hiveserver2 --如果是验证presto,这个可以不要,但这个是10002端口开启的必须条件
telnet bigdata.lzf 10002
hive (执行后,自然就可以执行各种hive命令)
也可以使用beeline
注:无论是hive命令还是beeline都会提示不建议使用,而是使用spark,tez之类的。
第六步:安装presto
以下内容可以完全参阅
https://prestodb.io/docs/current/installation/deployment.html
6.1下载和配置环境
解压到 /home/hadoop/presto-server-0.177
修改.bash_profile
最终的内容如下:
export JAVA_HOME=/usr/local/jdk1.8.0_131
export HADOOP_HOME=/home/hadoop/hadoop-2.8.0
export HADOOP_CONF_DIR=/home/hadoop/hadoop-2.8.0/etc/hadoop
export HADOOP_YARN_HOME=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HIVE_HOME=/home/hadoop/apache-hive-2.1.1-bin
export HIVE_CONF_DIR=/home/hadoop/apache-hive-2.1.1-bin/conf
export HCAT_LOG_DIR=/home/hadoop/apache-hive-2.1.1-bin/hcatalog/sbin/logs
export PRESTO_HOME=/home/hadoop/presto-server-0.177
export PATH=$PATH:$HOME/.local/bin:$HOME/bin:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HIVE_HOME/bin:$PRESTO_HOME/bin
然后 source .bash_profile
6.2 修改各种配置
创建目录
mkdir -p $PRESTO_HOME/etc/catalog
mkdir -p /home/hadoop/data_presto/data
修改各个配置文件(这些文件都需要自己通过vi/vim创建,和hadoop不同,presto没有模板)
node.properties
node.environment=prestoquery
node.id=presto-0001
node.data-dir=/home/hadoop/data_presto/data
jvm.config
-server
-Xmx16G
-XX:+UseG1GC
-XX:G1HeapRegionSize=32M
-XX:+UseGCOverheadLimit
-XX:+ExplicitGCInvokesConcurrent
-XX:+HeapDumpOnOutOfMemoryError
-XX:+ExitOnOutOfMemoryError
-DHADOOP_USER_NAME=hadoop
config.propertis
#如果presto只是安装一台机器上(既是coordinator又是worker),那么按照以下方式配置:
coordinator=true
node-scheduler.include-coordinator=true
#注意端口不要和hadoop,hive的冲突,配置之前可以使用netstat观察下
#在部署之前,至少应该有一份文档列出机器,ip,端口等等信息,包括路径,系统版本
http-server.http.port=8080
query.max-memory=5GB
query.max-memory-per-node=1GB
discovery-server.enabled=true
discovery.uri=http://bigdata.lzf:8080
log.properties
#正常之后,可以把DEBUG设置为其它数值: DEBUG,INFO,WARN,ERROR
com.facebook.presto=DEBUG
hive.properties (catalog目录下)
connector.name=hive-hadoop2
hive.metastore.uri=thrift://bigdata.lzf:9083
6.3 启动和关闭
$PRESTO_HOME/bin/launcher start -- 后台运行
$PRESTO_HOME/bin/launcher run --日志运行
$PRESTO_HOME/bin/launcher stop --停止
6.4 验证
[hadoop@bigdata ~]$ jps
6656 SecondaryNameNode
6992 NodeManager
7508 RunJar
7604 RunJar
9288 PrestoServer
6858 ResourceManager
6332 NameNode
6460 DataNode
9870 Jps
同时可以访问8080
6.5 使用presto-cli
下载presto-cli 的jar包,放在$PRESTO_HOME/bin下,并重命名为presto-cli
然后执行以下命令
presto-cli --server bigdata.lzf:8080 --catalog hive --schema default
presto:default> show tables;
Table
----------
customer
(1 row)
Query 20170602_093743_00002_pdfui, FINISHED, 1 node
Splits: 18 total, 18 done (100.00%)
0:11 [1 rows, 25B] [0 rows/s, 2B/s]
presto:default> select * from customer;
name
----------
luzhifei
(1 row)
Query 20170602_093803_00003_pdfui, FINISHED, 1 node
Splits: 17 total, 17 done (100.00%)
0:09 [1 rows, 9B] [0 rows/s, 0B/s]
成功!
第七:总结
1.耐心
2.网络上很多blog是可行的,但也有很多是错误的。最好是阅读官方参考
3.以上是单机下的配置,不能全部搬到生产环境
4.安装高版本的bigdata组件,建议还是用高版本的os,否则光glibc就有点麻烦
5.如果可能,也可以自己编译源码后再安装,但那个不适合于初学者。
第八:参考
主要参考:
hadoop
http://hadoop.apache.org/docs/r2.8.0/hadoop-project-dist/hadoop-common/SingleCluster.html
http://hadoop.apache.org/docs/r2.8.0/hadoop-project-dist/hadoop-common/Superusers.html
http://blog.csdn.net/se7en_q/article/details/47258007
hive2
http://www.2cto.com/database/201408/325554.html
http://www.tuicool.com/articles/Bbqaea
http://blog.csdn.net/login_sonata/article/details/53178613
presto
https://prestodb.io/docs/current/installation/deployment.html
单机安装hadoop+hive+presto的更多相关文章
- 单机安装Hadoop
单机安装hadoop ------------------------------------------------------------------ 操作系统:centos7 64 位 hado ...
- Docker+Hadoop+Hive+Presto 使用Docker部署Hadoop环境和Presto
Background 一. 什么是Presto Presto通过使用分布式查询,可以快速高效的完成海量数据的查询.如果你需要处理TB或者PB级别的数据,那么你可能更希望借助于Hadoop和HDFS来完 ...
- Windows环境下安装Hadoop+Hive的使用案例
Hadoop安装: 首先到官方下载官网的hadoop2.7.7,链接如下 https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/ 找网盘的 ...
- 在Ubuntu上单机安装Hadoop
最近大数据比较火,所以也想学习一下,所以在虚拟机安装Ubuntu Server,然后安装Hadoop. 以下是安装步骤: 1. 安装Java 如果是新机器,默认没有安装java,运行java –ver ...
- 单机安装Hadoop环境
目的 这篇文档的目的是帮助你快速完成单机上的Hadoop安装与使用以便你对Hadoop分布式文件系统(HDFS)和Map-Reduce框架有所体会,比如在HDFS上运行示例程序或简单作业等. 先决条件 ...
- 单机安装hadoop集群
一 .安装前准备 1.VMware虚拟内容 2.Linux系统 (CentOS-6.9-min) 镜像文件http://vault.centos.org/ 3.jdk 1.8 rpm或bin文件 ht ...
- Windows单机安装hadoop
版本信息 Hadoop 3.2.0 java version "1.8.0_201" Windows 7专业版,64位 安装过程 jdk安装 下载jdk,解压到目录,D:\Java ...
- 单机安装hive和presto
问题: 公司最近在搞presto,主要是分析一下presto和hive的查询大数据量的性能对比: 我先把我的对比图拿出来(50条数据左右)针对同一条sql(select * from employee ...
- hive单机安装(实战)
hive使用与注意事项:http://blog.csdn.net/stark_summer/article/details/44222089 连接命令:beeline -n root -u jdbc: ...
随机推荐
- scss-@at-root
@at-root指令可以使一个或多个规则被限定输出在文档的根层级上,而不是被嵌套在其父选择器下. 下面就通过scss代码实例介绍一下它的作用: 没有使用@at-root命令的默认情况. .parent ...
- ${pageContext.request.contextPath}是JSP取得绝对路径(转载)
${pageContext.request.contextPath}是JSP取得绝对路径的方法,等价于<%=request.getContextPath()%> . 也就是取出部署的应用程 ...
- Java设计模式—适配器模式
适配器模式的个人理解: 首先有一个目标角色.一个源角色还有一个适配器角色.我们要做的就是利用适配器角色将源角色转换为目标角色.而目标角色是一个正在良好运行的一个角色. 转换方法: (1) 适配器类继 ...
- ViewPager+handler实现轮播
先说下功能吧,随便设置一个网络图片链接的集合,作为图片的资源.我用ImageLoader来加载图片,在图片未加载完成时会ProgressBar加载状态 在Handler发送一个空消息来实现页面的轮播 ...
- html 表格的一些属性设置
第一种:单元格跨行 第二种:单元格间距 第三种:带有标题的表格 第四种:带标题的表格
- 玩得一手好注入之order by排序篇
看了之前Gr36_前辈在先知上的议题,其中有提到排序注入,这个在最近经常遇到这样的问题,所以先总结下order by 排序注入的知识. 0×00 背景 看了之前Gr36_前辈在先知上的议题,其中有提到 ...
- Oracle彻底杀掉进程
kill session 是DBA经常碰到的事情之一.如果kill 掉了不该kill 的session,则具有破坏性,因此尽可能的避免这样的错误发生.同时也应当注意,如果kill 的session属于 ...
- 在浏览器里使用SAPGUI里的SE80
效果如图:点击Fiori launchpad的SE80对应的tile: 即可在浏览器里打开SE80 具体步骤 (1). 在后台找到Fiori catalog page ID: SAP_FIORI_EX ...
- 如何使用代码获得一个function module的Where Used List
如果要获得一个function module的Where Used List,我们通常用的办法是使用ABAP workbench里提供的功能. where used list显示结果如下: 但我接到一 ...
- solidity开发之windows下配置remix本地环境遇到的问题及解决
本人按照这个教程配置remix本地环境.[https://cloud.tencent.com/developer/article/1374376] win+R打开管理员终端,在欲配置为本地目录的路径执 ...