티스토리

Ju Factory
검색하기

블로그 홈

Ju Factory

yujuwon.tistory.com/m

Ju Factory

구독자
10
방명록 방문하기

주요 글 목록

  • [Spark] history server 장애 새벽에 갑자기 namenode가 내려갔다는 장애 알림 메시지를 받게 됨!!! 일단 일어나서 부랴부랴 네임노드를 다시 재 시작해주고.. (다행히 ha 설정이 되어 있어서 서비스 상에서는 문제가 없었음) 자세히 왜 내려 갔는지 문제점을 파악하기 시작!! 일단 문제가 발생한 원인은 아래의 그래프에서 찾을 수 있었다. 바로바로 과도한 cpu 사용으로 인한 namenode shutdown 저렇게 과도하게 cpu를 먹고 있는게 과연 무엇을까 서버 접속해서 top를 쳐본 결과 spark history server에서 2000% 넘게 cpu를 사용하고 있는 걸 확인했다. 왜 history server가 2000%를 먹고 있는지 확인해 보기 위해 hdfs에 있는 history log list를 확인하려고 접근하려는 순.. 공감수 0 댓글수 0 2025. 4. 14.
  • airflow hdfs provider 설치하기 airflow에서 hdfs를 깔끔하게 접근하는 방법이 없을까 고민하다가 airflow provider란 걸 발견했다.airflow provider는 aws나 azure, google cloud 등을 airflow에서 좀 더 쉽게 연결해 줄 수 있도록 제공해주는 plugin이라고 생각하면 쉬울 것 같다. 일단 내가 설치한 airflow 환경에서 hdfs provider가 있는지 여부부터 살펴 보자.airflow UI에서 admin   클릭하면 현재 airflow에서 제공되는 provider의 목록들이 나타난다. 불행하게도 hdfs 관련된 provider는 보이지 않는다.그럼 이제 hdfs provider를 직접 설치해 보도록 하자. 설치를 하기 위해서는 airflow Docker 이미지의 customize.. 공감수 0 댓글수 0 2024. 8. 21.
  • spark 모르는 옵션 정리 spark.task.maxFailurestask의 실패 최대 횟수 (default 4)spark.stage.maxConsecutiveAttempts노드 scale 조정, 트리거로 인한 노드 종료 등의 이유로 stage가 실패하게 되면 설정된 count 만큼 허용한다.예를 들어 작업 중 어떤 한 노드를 강제 종료하게 되면 task 실패 횟수에 1이 추가되는게 아니라 maxCounsecutiveAttempts에 1이 추가가 된다. 설정된 값만큼의 실패 예외를 허용해 준다.spark.shuffle.file.buffershuffle 시 파일 출력 스트림 버퍼 크기 spark.sql.files.maxPartitionBytesinput partition의 크기를 설정한다. (default 128mb (1342177.. 공감수 0 댓글수 0 2024. 6. 21.
  • tensorflow serving memory leak?? 아래의 docker hub를 통해 tensorflow serving 이미지를 다운 받는다. https://hub.docker.com/layers/tensorflow/serving/2.14.1-gpu/images/sha256-cdae1c60c07d1ffc94ebc086e0f1a4d7f1ecc52f3fec558f1f7b506dfd4edce2?context=explore Docker hub.docker.com $> docker pull tensorflow/serving:2.14.1-gpu model은 dockerhub git에 있는 예제 프로그램 대로 실행해본다. 1. 우선은 git 받기 $> git clone https://github.com/tensorflow/serving 2. 환경 변수 정의하기 $> .. 공감수 0 댓글수 0 2024. 4. 2.
  • pod evicted 난 pod 일괄 삭제하기 evicted가 된 pod의 경우 계속 pod에 남아 있어서 k8s 화면에 빨간색으로 떠 있게 된다.. (이게 너무 싫음) 그래서 evicted된 pod를 모두 일괄 삭제하기로 했다. 우선 evicted된 원인 확인을 위해 evicted 된 pod의 describe를 log에 저장한다. kubectl get pods | grep Evicted | awk '{print $1}' | xargs kubectl describe pods {} > evicted.log 해당 log 저장이 완료되었으면 이제 해당 pod들을 삭제해주자. k get pods | grep Evicted | awk '{print $1}' | xargs kubectl delete pods {} 공감수 0 댓글수 1 2024. 2. 6.
  • rdd mapPartitions와 foreachPartition 비교 쓰면서 늘 헷갈리는게 foreachPartition인 것 같다. 이게 무슨 용도로 있는 함수인가... 그래서 이번 기회에 mapPartitions와 foreachPartition을 비교해 보기로 했다. 아래와 같이 코드를 작성한다. num_rdd = sc.parallelize(range(100000), 10) num_rdd.getNumPartitions() getNumPartitions를 찍어보면 10개가 찍히는 걸 확인할 수 있다. 이제 map으로 돌릴 함수를 선언하자 def square(num_list): for num in num_list: yield num * num mapPartitions의 경우 yield 값을 넘겨주어야 iterate 동작을 할 수가 있다. 이제 이 함수를 mapPartiti.. 공감수 1 댓글수 1 2024. 2. 5.
  • java.lang.IllegalAccessError: class org.apache.spark.storage.StorageUtils$ cannot access class sun.nio.ch.DirectBuffer spark session 생성 시에 아래와 같은 에러가 발생 했다. java.lang.IllegalAccessError: class org.apache.spark.storage.StorageUtils$ (in unnamed module @0x706a04ae) cannot access class sun.nio.ch.DirectBuffer 에러가 발생되는 코드는 아래와 같다. SparkSession.builder().config(sparkConf) .getOrCreate() 평상 시에 늘 쓰던 구문인데 갑자기 에러가 발생해서 당황했다. ㅠ_ㅠ 구글링을 해도 별다른 말을 없고.... intelliJ에서 이리저리 설정을 찾던 도중 아래와 같이 Run configuration이 java 11로 되어 있다는 사실을.. 공감수 0 댓글수 1 2024. 1. 8.
  • pyflink 시작하기 회사 시스템을 flink로 변경해야 하는 이슈가 있어서 겸사겸사 pyflink를 사용해 보기로 했다. 아래는 flink docker file로 안내되어 있는 flink homepage https://nightlies.apache.org/flink/flink-docs-release-1.18/docs/deployment/resource-providers/standalone/docker/#using-flink-python-on-docker Docker Docker Setup # Getting Started # This Getting Started section guides you through the local setup (on one machine, but in separate containers) of a.. 공감수 0 댓글수 2 2023. 11. 22.
  • k8s deployment에 sidecar 적용해보기 대부분의 pod는 1 pod = 1 container가 기본이나 동작 방식이나 응용 방식에 따라서 1pod안에 여러 개의 container를 두는 경우가 있다. 이러한 경우를 sidecar라고 하며 아래의 구조와 같다. 그냥 nginx를 별도 pod로 띄우고 micro service를 하면 되지 않을까?? 라는 생각을 잠시 하였으나, web application의 경우 nginx와 통신하기 위해서는 cross domain 문제도 설정해야 하는 이슈 등이 있기 때문에 일단 간편하게 위와 같은 방식으로 사용했다. sidecar를 설정하기 위해서는 아래와 같이 deployment.yaml을 작성해 주면 된다. apiVersion: apps/v1 kind: Deployment metadata: name: pro.. 공감수 0 댓글수 0 2023. 9. 25.
  • 맥에 kubeflow 설치하기 설치 환경 minikube : v1.26.0 kubectl client : v1.21.0 kubectl server : v.1.21.0 kustomize : v.3.2.0 kubenetes : v.1.21.0 kubeflow : v.1.4.0 1. kubenetes를 설치하기 위해 우선 minikube를 설치한다. $> brew install minikube 2. minikube의 설치가 끝났다면 kubectl을 설치하자. $> curl -LO "https://dl.k8s.io/release/v1.21.0/bin/darwin/amd64/kubectl" $> chmod +x ./kubectl $> sudo mv ./kubectl /usr/local/bin/kubectl $> sudo chown root: .. 공감수 0 댓글수 0 2022. 7. 26.
  • [KUBEFLOW] 2. Getting started https://www.manning.com/books/kubeflow-in-action Kubeflow in Action Kubeflow simplifies and automates machine learning tasks like interactive analysis, complex pipelines, and model training. Seamlessly push models to production in the containerized and distributed environment and scale your ML infrastructure from your lapt www.manning.com 이 장에서는 kubeflow 설치 방법과 Jupyter Notebooks, Minio, Seldon과 .. 공감수 0 댓글수 0 2022. 2. 14.
  • [KUBEFLOW] 1. Data science at scale https://www.manning.com/books/kubeflow-in-action Kubeflow in Action Kubeflow simplifies and automates machine learning tasks like interactive analysis, complex pipelines, and model training. Seamlessly push models to production in the containerized and distributed environment and scale your ML infrastructure from your lapt www.manning.com kubeflow는 데이터 사전 처리에서 모델 학습, 배포까지의 모든 기능을 제공하는 프레임워크이다. 1.. 공감수 1 댓글수 0 2022. 2. 12.
  • [HBASE] 간단 명령어 이직하기 전에는 Hbase를 접할 경우가 1도 없었는데, 이직 후 Hbase를 가지고 노는 일이 많기에 사용법을 좀 정리해 보기로 했다. 우선 접속! 아래와 같이 접속하면 된다. $> hbase shell 만약에 customizing한 config 파일이 있고 이 설정대로 접속하고 싶다면? $> hbase --config shell ex) hbase --config /working/hbase shell 위의 명령이 성공하면 hbase shell 내부로 진입 한 것을 확인할 수가 있다.우선 snapshot list를 확인해 보자. hbase> list_snapshots 화면에 snapshot 리스트들이 출력되는 것을 확인할 수가 있다.불필요한 snapshot은 아래 명령을 써서 지워주자. hbase> de.. 공감수 3 댓글수 0 2018. 9. 26.
  • [SPARK] RDD를 DataFrame으로 변환해주기 file을 읽어서 RDD로 만든 다음 해당 RDD를 DataFrame으로 변환해 주려고 한다. 일단 json 데이터를 파일로 읽어서 아래와 같이 RDD로 바꿔 보자. val conf = new SparkConf().setAppName("test") val sc = new SparkContext(conf)val rdd = sc.textFile("test.json") 해당 rdd를 df로 변환하자. df로 변환하기 위해서는 SQLContext를 사용해야 하는데, 이를 위해 maven에 spark-sql을 추가해 주자. org.apache.spark spark-sql_2.10 1.4.1 이제 rdd를 df로 변환해 주자. import org.apache.spark.sql.SQLContext val sqlCon.. 공감수 0 댓글수 0 2018. 3. 28.
  • [HBASE] 테이블 읽어보기 HBASE에 있는 table이 제대로 읽어지는지 확인이 필요해서 아래와 같이 코드를 작성했다.HBASE Client와 server version은 모두 0.98.11을 사용했다. (낮아도 한~~참 낮다 -_-) HBaseConfiguration으로 hbase 설정을 해 준후, HBaseAdmin을 이용해서 table list를 가져오자.Scan 객체를 생성한 후 table의 row마다 print를 해줘서 해당 row 내용을 읽는다.참고로 위에서 선언한 객체들은 다 deprecated 된 상태이다. (-_-!!!!)테스트 용으로 대충 만든 거라... 실제 서비스용으로 사용하기 위해서는 다른 코드를 사용하는 것이 정신 건강에도 더 좋을 듯 하다. 공감수 0 댓글수 0 2017. 11. 10.
  • [SPARK] word count (pyspark) 이번에는 spark를 이용하여 word count를 해보려고 한다. 참고 reference는 아래와 같다. http://nbviewer.ipython.org/github/spark-mooc/mooc-setup/blob/master/lab1_word_count_student.ipynb#-(4f)-Count-the-words- 기본적인 개요는 아래와 같다. 1. base RDD와 pair RDD 만들기 2. pair RDD counting 하기 3. 단어 개수 세기와 평균 값 구하기. 4. 파일을 읽어서 word count 하기 1. base RDD와 pair RDD 만들기 아래와 같이 base RDD를 만들어 본다. from pyspark import SparkContext sc = SparkContext.. 공감수 0 댓글수 0 2015. 11. 25.
  • [SPARK] tutorial (pyspark) Apache Spark with the Python http://nbviewer.ipython.org/github/spark-mooc/mooc-setup/blob/master/spark_tutorial_student.ipynb 사이트에 있는 내용을 번역함. Spark Context - spark에서 통신은 driver와 executor 사이에서 발생한다. driver는 실행에 필요한 spark job들을 가지고 있으며, 이러한 spark job들은 executor에서 실행되기 위해 task 단위로 쪼개진다. - spark와 API를 사용하기 위해서는 SparkContext 사용이 필요하다. SparkContext가 생성되면, 마스터에게 동작 가능한 core들을 요청한다. 마스터가 동작 가능한 core들을.. 공감수 3 댓글수 0 2015. 11. 24.
  • [SPARK] docker로 스파크 설치하기 (우분투 14.04) DOCKER를 이용해서 우분투 14.04 환경에서 SPARK를 설치해보자. (이게 가장 쉬우니깐..) https://hub.docker.com/r/jupyter/all-spark-notebook/ DOCKER HUB에서 위의 사이트 이미지가 spark 사용하기에는 가장 적합한 것 같다. (ipython notebook도 설치 되어 있고, scala, python2, python3 모두 연결되어 있음) 아래 명령어로 docker hub에서 이미지를 가져온다. $> sudo docker pull jupyter/all-spark-notebook 위의 명령어를 실행하면 아래와 같이 이미지를 다운받고 extract 하는 과정을 볼 수가 있다. image 다운이 다 되었으면, 아래의 명령어를 통해 다운 받은 ima.. 공감수 0 댓글수 0 2015. 11. 23.
  • [Lucene] 이클립스에 올리기 - 사전 환경 설정 Ant 설치하기 Ant는 JAVA 기반의 Build 프로그램으로써, xml 기반의 스크립트를 이용하여 Build를 할 수 있도록 기능을 제공한다. 다양한 환경에서도 동일한 스크립트 기반으로 Building을 할 수 있다는 장정이 있다.Ant 다운 받기 Ant 환경 설정Path = c:\apache-ant-1.8.4/bin ANT_HOME = c:\apache-ant-1.8.4 ivyIDE 설치하기ivyIDE는 라이브러리의 의존성 관리를 위한 프로그램으로 ant와 함께 많이 사용된다. 1. Eclipse의 Help의 Install New Software를 클릭한다. 2. Work with에 http://www.apache.org/dist/ant/ivyde/updatesite URL을 입력한다.3. Apac.. 공감수 0 댓글수 0 2013. 2. 7.
  • [Redis] BRPOPLPUSH Blocking 한 상태에서 tail의 값을 POP하고 POP 한 값을 다른 list 의 head에 PUSH 하는 함수 redis> RPUSH list1 1 2 3 (integer) 3 redis> BRPOPLPUSH list1 list2 0 "3" redis> LRANGE list1 0 -l 1) "3" 공감수 0 댓글수 0 2012. 10. 22.
  • [Redis] BRPOP RLPOP와 반대로 list의 tail부터 가져오는 방법. 나머지는 BLPOP와 동일하다. redis> RPUSH list1 1 2 3 (integer) 3 redis> BRPOP list1 0 1) "list1" 2) "3" 공감수 0 댓글수 0 2012. 10. 22.
  • [Redis] BLPOP Blocking 된 상태에서 list를 pop 하는 것을 말한다. LPOP의 blocking 버전이라고 할 수 있다. BLPOP가 호출이 되면, list의 헤더에 있는 key 값이 호출된다. redis> BLPOP list1 list2 list3 0 list1, list2, list3에 존재하는 키 값중 가장 먼저 쓰여진 list1에 저장된 키 값 하나를 pop 한다. list1에 값이 없다면 list2의 값을 pop 한다. 만약 list1, list2, list3 모두 값이 없다면 redis는 다른 client에서 해당 list에 값을 입력하기 전까지는 block 된다. ( 맨 마지막 0은 timeout 파라미터로써 0일 경우엔 INFINITE, 그 외엔 초단위의 타임 아웃 값을 가짐) redis> R.. 공감수 0 댓글수 0 2012. 10. 22.
  • [Redis] BITOP 다중 키 사이의 비트연산을 위한 명령어. ex) BITOP AND destkey strkey1 strkey2 ... strkeyN BITOP OR destkey strkey1 strkey2 ... strkeyN BITOP XOR destkey strkey1 strkey2 ... strkeyN BITOP NOT destkey strkey 2.6 버전 이상에서만 동작! 난 2.4버전이라 테스트 해볼 수가 없네 ㅋ 공감수 0 댓글수 0 2012. 10. 22.
  • [Redis] BITCOUNT 문자열의 비트열 집합을 세기 위한 명령어. redis> SET mykey "foobar" OK redis> BITCOUNT mykey (integer) 26 redis> BITCOUNT mykey 0 0 (integer) 4 redis> BITCOUNT mykey 1 1 (integer) 6 2.6 버전 이상에서만 동작! 공감수 0 댓글수 0 2012. 10. 22.
  • [Redis] BGSAVE 백그라운드로 DB를 저장한다. OK code는 즉시 리턴된다. Redis는 fork를 호출하여 자식 프로세스를 만들고 자식 프로세스가 DB를 저장한 후 종료한다. 클라이언트는 동작이 성공했는지 여부를 체크하기 위해 LASTSAVE 명령어를 쓸 수 있다. 공감수 0 댓글수 0 2012. 10. 22.
  • [Redis] BGREWRITEAOF AOF 동작을 실행한다. 지속성으로 파일에 로그를 남기는 방식. redis를 다시 시작할 때 남겨진 로그를 다시 구동시킴으로써 최신의 데이터를 유지할 수 있다. 일단 AOF라는 것이 무엇인지 알기 위해선 Redis 저장 방식을 알아야 한다. Redis Persistence - Redis는 데이터 Persistence를 제공하기 위해 RDB와 AOF 방식을 사용한다. - RDB는 dateset을 특정 시점에서 저장하도록 시행하는 방식이며, AOF는 서버로부터 계속해서 log를 남기고, 서버가 시작할 시, log에 남긴 명령어를 다시 시작하는 방법이다. 로그에 남겨진 명령어는 Redis Protocol과 동일한 포멧으로 남겨진다. - RDB는 설정 파일에서 SNAPSHOTTING 부분과 관련이 있으며, 저장.. 공감수 0 댓글수 0 2012. 10. 22.
  • [Redis] auth auth command - 암호를 설정함으로써 redis server를 보호할 수 있다. redis는 클라이언트로부터 날아온 명령어를 수행하기 전에 암호를 요청할 수 있다. 이는 configuration file의 requirepass 항목을 설정함으로써 동작이 가능하다. redis> get mykey (error) ERR operation not permitted redis> auth 1111 OK redis> get mykey "12345678" 공감수 0 댓글수 0 2012. 10. 22.
  • [Redis] APPEND APPEND command - 만약 key가 존재하고 문자열 값을 가진다면, APPEND 명령은 기존 문자열 끝부터 동작한다. 하지만 key가 존재하지 않거나 빈 문자열을 가지고 있다면 이는 SET 명령어와 동일한 동작을 하게 될 것이다 redis> EXISTS mykey (integer) 0 redis> APPEND mykey "Hello" (integer) 5 redis> APPEND mykey " World" (integer) 11 redis> GET mykey "Hello World" 공감수 0 댓글수 0 2012. 10. 22.
  • [Redis] Redis 소스 분석 오늘부터 Redis 소스 분석 시작!!!!!! 작심삼일이 되지 않기를... 공감수 0 댓글수 0 2012. 10. 19.
  • [Redis] Redis 비밀번호 설정 1. vi 편집기를 이용하여 /etc/redis/6379.conf 파일을 연다. 2. 설정 파일에서 아래와 같이 requirepass라고 설정된 부분의 주석을 제거(#)한 후 비밀번호를 입력합니다. 3. /etc/init.d로 이동한 후 다음과 같이 redis 서버를 재기동 합니다. $>./redis_6379 stop $>./redis_6379 start 4. 다시 redis가 설치된 폴더의 src 위치로 이동한 후, redis-cli를 실행하면 명령어가 동작하지 않는 것을 볼 수 있다. 5. auth password를 입력한 후 다시 명령어를 입력하면 올바르게 동작하는 것을 확인할 수 있다. 공감수 2 댓글수 0 2012. 10. 18.
    문의안내
    • 티스토리
    • 로그인
    • 고객센터

    티스토리는 카카오에서 사랑을 담아 만듭니다.

    © Kakao Corp.