티스토리 뷰

아래 내용은 위 원문 기사를 번역한 내용이다.

Apache Spark 1.2.0은 Netty기반과 고가용성, 머신러닝 API를 지원한다.

Apache Spark 1.2.0 was released with major performance and usability improvements in the Spark core engine. It represents the work of 172 contributors from over 60 institutions and comprises more than 1000 patches.
아파치 스파크 코어엔진 성능과 가용성이 향상된 1.2.0 버전이 릴리즈 되었다. 60개 회사의 172명의 Contributor들이 작업에 참여했으며, 1000개 이상의 패치가 적용되었다.

Spark 1.2.0 is fully binary compatible with 1.1 and 1.0 and includes a Netty-based implementation, which significantly improves efficiency. Spark streaming adds support for Python and High Availability via Write Ahead Logs (WALs). In addition there is a set of machine learning APIs called spark.ml.
호율성이 향상된 Netty 기반 구현내용이 포함되었다. Spark streaming은 파이썬을 지원하고 WALs를 통한 고가용성을 가진다. 추가적으로 spark.ml이라는 머신러닝 API가 추가되었다.

Spark SQL, which is a relatively new project, has improved support for external data sources.
InfoQ caught up with Patrick Wendell, Release manager for earlier Spark releases, a Spark committer and PMC member who works at Databricks.
신규 프로젝트인 Spark SQL은 외부 데이터소스를 지원하도록 개선되었다.
InfoQ에서는 Patrick Wendell(전 Spark 배포 매니저, Spark Commiter, Databricks사의 PMC회원)과 인터뷰를 가졌다.

InfoQ: First things first. As a developer who is comfortable with Map/Reduce, Spark seems to usher in a new paradigm? As a developer well versed in Map/Reduce should they even care about Apache Spark?
InfoQ : Map/Reduce에 익순한 개발자들에게 Spark는 새로운 패러다임으로 안내할 것인가? Map/Reduce에 숙달된 개발자들도 Apache Spark를 해야하는가?

Spark was created initially to improve on the Map/Reduce model, so existing Map/Reduce developers should definitely give Spark a try! When compared to Map/Reduce, Spark offers a higher level, more expressive API in addition to a rich set of built-in and community libraries. To draw an analogy, if Map/Reduce is like an assembly language, i.e. low level and imperative, Spark in turn is more like a modern programming language with libraries and packages. Spark also provides significant performance improvements over Map/Reduce.


Spark는 초기에 Map/Reduce모델을 개선하기 위해 만들어졌다. 그래서 기존 Map/Reduce개발자들은 반드시 Spark를 써봐야 한다. Map/Reduce와 비교해 볼 때, Spark는 높은 수준의 좀 더 다양한 API를 제공하며, Community Library들도 제공한다. 비유를 해 보자면, Map/Reduce는 낮은 수준의 어셈블리 언어 같거나 명령적이라면 Spark는 라이브러리나 패키지를 포함한 신식 프로그램언어 같다. 또한 Spark는 Map/Reduce보다 크게 향상된 성능을 제공한다.

InfoQ: You can run Map/Reduce programs and other programs as well on YARN. What is the relationship between Apache Spark and YARN if any?
InfoQ : Map/Reduce나 다른 프로그램을 YARN(얀)환경에서 수행할 수 있다. Apache Spark와 YARN(얀)은 어떤가?

Spark can run in many different environments, ranging from co-existing with Hadoop deployments, to running in a Mesos cluster, and also in a managed service such as Databricks Cloud. In Hadoop environments, YARN is the cluster manager that helps launch and schedule the distributed components of a running Spark application. YARN can multiplex both Spark and MapReduce workloads on the same cluster hardware.


Spark는 기존 Hadoop에서부터, Mesos클러스터, Databricks클라우드 같은 서비스에 이르기까지 다양한 환경에서 수행할 수 있다. Hadoop환경에서는 YARN(얀)은 Spark 어플리케이션을 수행하는 분산 컴포넌트들을 수행하고 스케줄링을 관리하는 클러스터 매니저이다. YARN(얀)은 동일 클러스터 장비에서 Spark와 Map/Reduce를 같이 수행할 수 있다.

InfoQ:Do you have to be familiar with Scala to be a power Spark user?
InfoQ : 숙달된 Spark사용자가 되기 위해서 Scala를 잘 해야하는가?

Today there are as many more Java and Python users when compared to Scala users of Spark, hence no knowledge of Scala is necessary. Spark’s programmatic shell is provided in both Python and Scala (Java doesn’t have an interactive shell, so we don’t have that feature in Java). Spark’s SQL features are available from all languages. For those wanting to try something new, the Scala API is always available.


요즘 Scala사용자만큼 Java, Python사용자도 많이 있다. 이런 이유로 Scala를 몰라도 괜찮다. Spark 수행쉘은 Python과 Scala에서 수행할 수 있다.(Java는 쉘이 없기 때문에 Java기능은 제공하지 않는다.) Spark의 SQL 기능은 모든 프로그래밍 언어에서 사용 가능하다. 뭔가 새로운 것을 해보고자 한다면 Scala API를 사용하면 된다.

InfoQ:Spark SQL is a recent addition. Does being able to use the JDBC/ODBC APIs with Spark makes it more developer friendly?
InfoQ : Spark SQL은 최근에 추가된 기능이다. Spark의 JDBC/ODBC API를 사용할 수 있는 것이 개발자들에게 좀 더 도움이 되었는가?

Being able to expose Spark datasets over JDBC/ODBC is one of the most popular features we’ve provided in the last year. These interfaces allow querying Spark data with traditional BI and visualization tools as well as integrating with third party applications. With a single program, Spark allows you to ETL your data from whatever format it is currently in (JSON, Parquet, a Database), transform it, and expose it for ad-hoc querying. This is one of the most powerful concepts in Spark, a unification of what used to take many separate tools.


JDBC/ODBC를 통한 Spark 데이터셋은 지난해 제공된 것 중 가장 널리 알려진 기능 중 하나이다. JDBC/ODBC 인터페이스들은 기존 BI 나 시각화 도구를 통해 Spark 데이터를 조회하거나 Third-party Application을 통합할 수 있게끔 해 준다. 단일 프로그램에서 Spark는 어떤 유형의 데이터(JSON, Parquet, Database) 데이터를 옮길 수 있고, 변형하고, 언제나 조회가 가능하다. 이것은 Spark의 가장 강력한 개념 중 하나이며, 많은 다른 툴들을 대표한다.

InfoQ: Disk storage is unlimited whereas memory is ultimately limited. Does Apache Spark have data size limitations unlike Apache Hadoop? What are the types of applications that can benefit most from Apache Spark?
InfoQ : Disk영역은 제한이 없는 반면 Memory는 제한적이다. Spark는 Hadoop과 다르게 데이터 크기 제한이 있는가? 어떤 유형의 Application이 Spark에 가장 적한한가?

While memory available in modern clusters is skyrocketing, there are always cases where data just won’t fit in memory. In all modern versions of Spark, most operations that exceed available memory will spill over to disk, meaning users need not worry about memory limits. As an example, Spark’s win of the Jim Gray sort benchmark occurred on a data set many times larger than could fit in cluster memory, and even with this Spark’s efficiency was several multiples higher than other widely used systems.


최근 클러스터 환경에서 Memory가용량은 급증하고 있으나, 항상 Memory에 맞지 않은 데이터는 있기 마련이다. 최근 버전에서 대부분의 Operation들은 Memory가용량을 초과할 경우 Disk를 사용한다. 이 것은 사용자가 Memory 용량 제한을 신경쓸 필요가 없다는 것을 의미한다. 예를 들어 클러스터 Memory 용량보다 훨씬 많은 Data셋을 정렬하는 Jim Gray 벤치마크에서 1등을 하였다. 그리고 Spark 효용성은 현재 널리 사용되는 시스템보다 몇 배 높다.

InfoQ: Let’s talk about performance. It’s impressive that Apache Spark was a joint winner in the Sort Benchmark originally instituted by Jim Gray. Can you talk about the relevance of these results keeping in mind that developers are generally skeptical about benchmark results?

InfoQ : 성능에 대해서 이야기 해보자. Spark가 Jim Gray가 주최하는 정렬 벤치마크에서 통합 우승한 것은 인상적이다. 벤치마크 결과에 대해 의심이 많은 개발자들에게 각인 시킬 만한 타당한 근거를 이야기 해 줄 수 있나?

We chose to pursue the Jim Gray benchmark because it is maintained by a third party committee. This ensures that it was independently validated and based on a set of well defined industry rules. Developer skepticism about benchmarks is warranted: self-reported, unverified benchmarks are often more marketing material than anything else. The beauty of open source is that users can try things out for themselves at little or no cost. I always encourage users to spin up Databricks Cloud or download Spark and evaluate it with their own data, rather than focusing too much on benchmarks.

It’s also important for users to think holistically about performance. If your data spends 6 hours in an ETL pipeline to get it into just the right format, or requires a 3-month effort to accommodate a schema change, is it really a win if the query time is marginally faster? If you need to transfer your data into another system to perform machine learning, is that worth a 10% performance improvement? Data is typically messy and complex, and end-to-end pipelines involve different computation models, such as querying, machine learning, and ETL. Spark’s goal is to make working with complex data in real-world pipelines just plain simple!


우리는 Jim Gray 벤치마크가 Third-party commitee에 의해 관리되기 때문에 도전해보기로 선택했다. 독립적으로 가치를 인정받고 잘 정의된 업계규칙을 기본으로 하고 있다고 확신한다. 벤치마크에 대한 개발자들의 의심을 보장할 수 있다:주체적이고 가치를 인장받지 못한 벤치마크는 종종 다른 어떤 것보다 마켓팅거리가 되곤 한다. 오픈소스의 미학은 적은 비용 또는 무료로 적용해 볼 수 있다는 점이다. 벤치마크에 너무 관심을 두지 말고 Databricks 클라우드나 Spark를 통해서 그들의 데이터로 검증해보라고 이야기 한다.
성능에 관해 전체적으로 생각해보는 것도 중요하다고 생각한다. 만약 ETL에서 6시간이 걸리는 데이터가 있거나 스키마 변경을 적용하는데 3달의 노력이 필요하다면 조회성능이 아주 조금 빨라지는 것이 정말 이득일까? 만약 머신러닝을 수행하기 위해 데이터 변환을 해야한다면 10% 성능 향상이 가치가 있을까? 데이터는 보통 정리되어 있지 않고 복잡하다. 종단 간 파이프라인은 조회나 머신러닝, ETL 같은 다른 계산 모델에도 적용된다. 그리고 Spark의 목적은 실세계의 복잡한 데이터를 동작할 수 있게 만드는 것이다. 간단하게!

A more detailed explanation of the list of features in Apache Spark 1.2.0 is in the databricks company blog. You can download the latest version from the Apache Spark download page. 

Spark 1.2.0에 관한 좀 더 상세한 설명은 Databrick사 블로그에서 확인할 수 있다. Apache Spark 다운로드 페이지에서 최신버전을 다운로드 받을 수 있다.



[느낀점]

한글로 번역해 본 것은 처음인데. 읽는 것 보다는 훨씬 어려웠던 것 같다. 그 중에도 영어 단어의 뜻에 맞는 한글을 찾아내는 게 제일 어려웠던 것 같다. 시작이 반이라는데... 이제 하나 했으니 둘은 조금 더 쉽지 않을까 싶다.




공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
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
글 보관함