[Gradle] 列举插件 时间: 2015-07-27 | 分类: Tool Gradle | 阅读: 6 字 ~1分钟下列方法可以列举出当前build.gradle牵涉的插件: project.plugins.each { println it }
[Ambari] 了解Ambari 时间: 2015-07-26 | 分类: BigData | 阅读: 20 字 ~1分钟今天看到一篇帖子《Ambari——大数据平台的搭建利器》介绍了Apache Ambari的使用。感觉Ambari确实不错,很便捷地支持Apache Hadoop集群的配置、管理和监控,堪称利器! Ambari对系统管理员提供如下功能: 配置Hadoop集群 Ambari提供逐步的的安装向导在任意多台机器上安装Hadoop集群。 Ambari处理集群中Hadoop服务的配置。 管理Hadoop集群 Ambari提供对整个集群范围内启动、停止和重新配置Hadoop服务的集中管理。 监控Hadoop集群 Ambari提供仪表盘用于监控Hadoop集群(HDFS、MapReduce、HBase、Hive和HCatalog)的健康和状态。 Ambari通过Ambari 运维指标系统收集指标。 Ambari提供用于系统告警的Ambari告警框架,可在需要时(例如节点宕机、剩余磁盘空间不足等)通知你。 Ambari对应用开发者和系统集成者提供如下功能: 通过Ambari REST APIs轻松将Hadoop配置、管理和监控功能与自己的应用集成。 Ambari当前可在一些64位Linux系统上安装。 另,Ambari中文为洋麻。
[Hive] 遇到Relative path in absolute URI:${system:java.io.tmpdir}/${system:user.name} 时间: 2015-07-25 | 分类: BigData | 阅读: 15 字 ~1分钟安装问Hive,启动一下CLI试一下效果。结果直接崩了,错误提示:Relative path in absolute URI:${system:java.io.tmpdir}/${system:user.name}。 Hive AdminManual Configuration里面的例子是将hive.exec.scratchdir设定为/tmp/mydir。即使按照示例来配置,还是会报hive.downloaded.resources.dir属性错误。后来看到网上有人说主要是Hadoop路径不支持带":",所以会报错。 解决方法: hive.exec.local.scratchdir: /tmp/${user.name} hive.downloaded.resources.dir: /tmp/${user.name}_resources 可以登入Hive Shell了!
[Hive] 安装Hive 1.2.x 时间: 2015-07-24 | 分类: BigData | 阅读: 195 字 ~1分钟我的Hadoop集群为node50064、node50069和node51054。本文的Hive和MySQL软件仅在node50064上安装。 安装Hive-内嵌元数据存储模式 Hive驱动、元数据存储接口和数据库(derby)使用相同的JVM。元数据保持在内嵌的derby数据库,只允许一个会话连接到数据库。 下载并解压缩Hive wget http://apache.cs.utah.edu/hive/hive-1.2.x/apache-hive-1.2.x-bin.tar.gz tar -xzf apache-hive-1.2.x-bin.tar.gz sudo mv apache-hive-1.2.x-bin /usr/local/hive sudo chown -R "hadoop:hadoop" /usr/local/hive 环境变量设置 export HADOOP_HOME=/usr/local/hadoop export HADOOP_PREFIX=$HADOOP_HOME export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_PREFIX/lib/native export HADOOP_OPTS="$HADOOP_OPTS -Djava.library.path=$HADOOP_PREFIX/lib/native" export HIVE_HOME=/usr/local/hive export PATH=$PATH:$HADOOP_PREFIX/bin:$HADOOP_PREFIX/sbin:$HIVE_HOME/bin 最后通过source~/.bashrc刷新配置文件。 conf/hive-env.sh 首先通过cd $HIVE_HOME/conf;cp hive-env.sh.template hive-env.sh;chmod 774hive-env.sh创建并设置hive-env.sh执行权限。 修改后的主要部分内容如下: # Set HADOOP_HOME to point to a specific hadoop install directory export HADOOP_HOME=${HADOOP_HOME:-/usr/local/hadoop} # Hive Configuration Directory can be controlled by: export HIVE_CONF_DIR=/usr/local/hive/conf # Folder containing extra ibraries required for hive compilation/execution can be controlled by: export HIVE_AUX_JARS_PATH=/usr/local/hive/lib conf/hive-site.阅读全文 »
选择候选样式表 时间: 2015-07-23 | 分类: FrontEnd | 阅读: 6 字 ~1分钟有的浏览器提供选择如下的候选层叠样式表。 IE Firefox Firefox可以通过F10调出菜单。 Chrome 不支持。
[Pig] 安装Pig 0.15.0 时间: 2015-07-20 | 分类: BigData | 阅读: 41 字 ~1分钟安装Pig 我的Hadoop集群为node50064、node50069和node51054。本文的Pig软件仅在node50064上安装。 下载并解压缩Pig wget http://apache.cs.utah.edu/pig/pig-0.15.0/pig-0.15.0.tar.gz tar -xzf pig-0.15.0.tar.gz sudo mv pig-0.15.0 /usr/local/pig sudo chown -R "hadoop:hadoop" /usr/local/pig 环境变量设置 export HADOOP_HOME=/usr/local/hadoop export HADOOP_PREFIX=$HADOOP_HOME export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_PREFIX/lib/native export HADOOP_OPTS="$HADOOP_OPTS -Djava.library.path=$HADOOP_PREFIX/lib/native" export PIG_HOME=/usr/local/pig export PIG_CLASSPATH=$HADOOP_HOME/conf export PATH=$PATH:$HADOOP_PREFIX/bin:$HADOOP_PREFIX/sbin:$PIG_HOME/bin 最后通过source~/.bashrc刷新配置文件。 conf/pig.properties pig.properties用于配置Pig各种参数。参数说明如下: 运行Pig控制台 参考 你用pig分析access_log日志中ip访问次数
为Artifactory设置proxy和remote repository 时间: 2015-07-19 | 分类: Tool | 阅读: 14 字 ~1分钟设置proxy 我一上来先设置代理,否则连不上远程仓库呀。 设置remote repository 远程仓库已经默认设置了jcenter,估计很少需要其他仓库了。 但不管三七二十一,还是把mavenCentral和gradlePlugins加上吧。全部勾选了Suppress POMConsistency Checks,取消勾选Handle Snapshots。 mavenCentral: http://repo1.maven.org/maven2/ gradlePlugins: https://plugins.gradle.org/m2/ 测试结果显示,所需构件实际上都是从jcenter下载的,其他两个暂时还没用到。
整理贴:八卦一下CoreOS 时间: 2015-07-17 | 分类: Tool | 阅读: 191 字 ~1分钟CoreOS是一个轻量级容器化Linux发行版,专为大型数据中心而设计,旨在通过轻量的系统架构和灵活的应用程序部署能力简化数据中心的维护成本和复杂度。 CoreOS的历史 2013年2月,美国的dotCloud公司发布了一款新型的Linux容器软件Docker,并建立了一个网站发布它的首个演示版本(见Docker第一篇官方博客)。而几乎同时,2013年3月,美国加州,年轻的帅小伙Alex Polvi正在自己的车库开始他的第二次创业。此前,他的首个创业公司Cloudkick卖给了云计算巨头Rackspcace(就是OpenStack的东家)。 有了第一桶金的Alex这次准备干一票大的,他计划开发一个足以颠覆传统的服务器系统的Linux发行版。为了提供能够从任意操作系统版本稳定无缝地升级到最新版系统的能力,Alex急需解决应用程序与操作系统之间的耦合问题。因此,当时还名不见经传的Docker容器引起了他的注意,凭着敏锐直觉,Alex预见了这个项目的价值,当仁不让地将Docker做为了这个系统支持的第一套应用程序隔离方案。不久以后,他们成立了以自己的系统发行版命名的组织:CoreOS。事实证明,采用Docker这个决定,后来很大程度上成就了CoreOS的生态系统。 CoreOS特点 首先,CoreOS没有提供包管理工具,而是通过容器化的运算环境向应用程序提供运算资源。应用程序之间共享系统内核和资源,但是彼此之间又互不可见。这样就意味着应用程序将不会再被直接安装到操作系统中,而是通过Docker 运行在容器中。这种方式使得操作系统、应用程序及运行环境之间的耦合度大大降低。相对于传统的部署方式而言,在 CoreOS集群中部署应用程序更加灵活便捷,应用程序运行环境之间的干扰更少,而且操作系统自身的维护也更加容易。 其次, CoreOS 采用双系统分区 (dual root partition)设计。两个分区分别被设置成主动模式和被动模式并在系统运行期间各司其职。主动分区负责系统运行,被动分区负责系统升级。一旦新版本的操作系统被发布,一个完整的系统文件将被下载至被动分区,并在系统下一次重启时从新版本分区启动,原来的被动分区将切换为主动分区,而之前的主动分区则被切换为被动分区,两个分区扮演的角色将相互对调。同时在系统运行期间系统分区被设置成只读状态,这样也确保了CoreOS 的安全性。CoreOS 的升级过程在默认条件下将自动完成,并且通过 cgroup对升级过程中使用到的网络和磁盘资源进行限制,将系统升级所带来的影响降至最低。 另外,CoreOS 使用 Systemd 取代 SysV 作为系统和服务的管理工具。与 SysV 相比,Systemd不但可以更好的追踪系统进程,而且也具备优秀的并行化处理能力,加之按需启动等特点,并结合 Docker 的快速启动能力,在 CoreOS集群中大规模部署 Docker容器与使用其他操作系统相比在性能上的优势将更加明显。Systemd 的另一个特点是引入了“target” 的概念,每个 target 应用于一个特定的服务,并且可以通过继承一个已有的 target扩展额外的功能,这样使得操作系统对系统上运行的服务拥有更好的控制力。 通过对系统结构的重新设计,CoreOS剔除了任何不必要的软件和服务。在一定程度上减轻了维护一个服务器集群的复杂度,帮助用户从繁琐的系统及软件维护工作中解脱出来。虽然CoreOS最初源自于Google ChromeOS,但是从一开始就决定了 CoreOS更加适合应用于一个集群环境而不是一个传统的服务器操作系统。 CoreOS相关工具 除了操作系统之外,CoreOS 团队和其他团队还提供了若干工具帮助用户管理 CoreOS 集群以及部署Docker容器。 etcd 在CoreOS 集群中处于骨架地位的是 etcd。 etcd 是一个分布式 key/value存储服务,CoreOS 集群中的程序和服务可以通过 etcd 共享信息或做服务发现 。etcd 基于非常著名的 raft一致性算法:通过选举形式在服务器之中选举 Lead 来同步数据,并以此确保集群之内信息始终一致和可用。etcd 以默认的形式安装于每个CoreOS 系统之中。在默认的配置下,etcd使用系统中的两个端口:4001和7001,其中4001提供给外部应用程序以HTTP+Json的形式读写数据,而7001则用作在每个etcd 之间进行数据同步。用户更可以通过配置 CA Cert让 etcd 以 HTTPS的方式读写及同步数据,进一步确保数据信息的安全性。 fleet fleet 是一个通过Systemd对CoreOS 集群中进行控制和管理的工具。fleet 与 Systemd 之间通过 D-Bus API 进行交互,每个fleet agent 之间通过 etcd 服务来注册和同步数据。fleet提供的功能非常丰富,包括查看集群中服务器的状态、启动或终止 Docker容器、读取日志内容等。更为重要的是 fleet可以确保集群中的服务一直处于可用状态。当出现某个通过 fleet创建的服务在集群中不可用时,如由于某台主机因为硬件或网络故障从集群中脱离时,原本运行在这台服务器中的一系列服务将通过fleet被重新分配到其他可用服务器中。虽然当前 fleet 还处于非常早期的状态,但是其管理 CoreOS集群的能力是非常有效的,并且仍然有很大的扩展空间,目前已提供简单的 API 接口供用户集成。阅读全文 »
阅读《微服务资源指南》 时间: 2015-07-15 | 分类: Tech | 阅读: 33 字 ~1分钟Martin Fowler近日发布了《Microservices Resource Guide》,介绍的是Martin自己和别人的书/文章汇集,一开头回顾了微服务的特征,接着谈到了对微服务和单块架构的权衡,最后大篇幅列举了很多公司开发微服务的经验教训。 微服务特征 通过服务进行组件化 围绕业务能力进行组织服务 团队为产品而不是项目工作 智能端点和哑管道:取其Unix思想,REST协议或消息总线仅仅是管道,服务才是智能的 去中心化治理 去中心化数据管理 基础设施自动化 故障设计:服务故障检测、自恢复 演进式设计 微服务与单块架构之间的权衡 微服务带来收益… 强模块边界: 微服务增强模块结构,这对大的团队尤为重要。 独立的部署: 简单服务更易于部署,由于它们都是自治的,服务出现问题不容易导致系统故障。 技术多样性: 使用微服务可以混合多种编程语言、开发框架和数据存储技术。 …也伴随着代价 分布: 由于远程调用慢并一直具有故障风险。很难开发分布式系统代码。 最终一致性: 对于分布式系统维护强一致性非常困难,这意味着必须管理最终一致性。 运维复杂: 需要一个成熟的运维团队来管理很多经常需要重新部署的服务。 微服务与单块架构的生产率 经验教训(略) 先看完《Build Microservices》,然后再读一遍所有列举资料,再单开新的博客帖子介绍吧。
Gradle Docker Plugin介绍 时间: 2015-07-14 | 分类: Tool Gradle | 阅读: 31 字 ~1分钟gradle-docker-plugin gradle-docker-plugin是由《Gradle实战》作者BenjaminMuschko实现的Gradle插件,用来管理Docker镜像和容器。gradle-docker-plugin实际上包括两个插件: com.bmuschko.docker-remote-api:提供通过远程API与Docker进行交互的定制任务 com.bmuschko.docker-java-application:为Java应用创建和上传Docker镜像 build.gradle buildscript { repositories { jcenter() } dependencies { classpath 'com.bmuschko:gradle-docker-plugin:2.4.1' } } apply plugin: 'java' apply plugin: 'application' apply plugin: 'com.bmuschko.docker-java-application' apply plugin: 'com.bmuschko.docker-remote-api' 参考 GitHub:bmuschko/gradle-docker-plugin