2021년 11월 15일 월요일

[ Git ] 기본 명령어

[ 저장소 ]

git remote

  - git 원격저장소[Repository] 목록 확인

git remote -v

  - git 원격저장소 이름과 url 목록 확인

git remote add 저장소이름 저장소URL 

  - 저장소URL의 원격저장소를 저장소이름으로 추가

git remote rm 저장소이름

  - 저장소이름의 원격저장소 제거


[ 확인 ]

git log

  - commit 로그 확인

git status

  - 파일 상태 확인(staged, untracked, ..)

git diff

  - commit된 파일상태와 현재 수정중인 상태 비교

git diff --staged

  - commit된 파일상태와 add된 파일 상태 비교


[ 업로드 ]

git add 파일명1 파일명2

  - 해당 파일을 [Staging Area]로 이동(tracking)

git commit -m "커밋메세지"

  - editor 호출없이 바로 커밋

git push

  - 원격저장소[Repository]에 local repository[Working Directory]의 commit 내용을 올림


[ 다운로드 ]

git pull

  - 원격저장소[Repository]의 내용을 가져와서(fetch) local repository[Working Directory]에 합침(merge)



[ 브런치 ]

git branch <브랜치 이름>

 - 브런치생성

git checkout <브랜치 이름>

 - 사용할 브런치로 변경

git branch -r (-a는 로컬원격전부 확인)

 - 원격브런치 목록확인


git push origin <브랜치 이름> 

 - 로컬브런치를 원격브런치로 추가

git branch --set-upstream-to origin/<브랜치 이름> 

 - 로컬브런치와 원격브런치 연동


git branch -d <브랜치 이름>

 - 브런치 삭제

git push origin --delete <브랜치 이름>

 - 원격저장소 브런치 삭제



[ 브런치 병합 ]

git checkout master

 - master사용

git branch -a 

 - checkout 바뀌었는지 확인

git merge <브런치 이름>

 - 병합

git push

 - 원격저장소에 병합할 경우 



[ 초기설정 ]

git init

git add .

git commit -m 'init'

github에서 프로젝트 생성

git remote add origin https://github.name.com/42f-platfrom/00000.git

git push --set-upstream origin master



[ git reset ]

git reset COMMIT_ID

- 로컬 저장소 원하는 commit 시점으로 리셋


git push -f origin master

- 원격 저장소 롤백



https://backlog.com/git-tutorial/kr/stepup/stepup1_1.html



2021년 11월 13일 토요일

[ Glue ] SageMaker와 Job Script 사용 시 Spark Session 차이점


SageMaker는 Spark-Shell과 같이 실행 시 Spark 세션 변수가 초기화 된다.

따로 define하지 않아도 print(spark) 하면 값이 할당 된 것을 볼 수 있다.

추가로 spark session 변수를 할당 하여 작업 시, 여러가지 에러를 맛본다.

반면에 Glue Job Script는 Spark 세션변수를 선언해줘야 한다.



[ SageMaker ]

import sys
from awsglue.transforms import *
from awsglue.utils import getResolvedOptions
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from awsglue.job import Job

## @params: [JOB_NAME]
args = getResolvedOptions(sys.argv, ['JOB_NAME'])
glueContext = GlueContext(SparkContext.getOrCreate())

df = spark.createDataFrame(
    [(1, "foo", "USA"),(2, "bar", "KOREA"),],
    ["id", "label", "country"]
)

df.printSchema()
df.createOrReplaceTempView("test")
spark.sql("select * from test").show()




[ Glue Job Script ]

import ...

sc = SparkContext()
glueContext = GlueContext(sc)
spark = glueContext.spark_session
job = Job(glueContext)
job.init(args['JOB_NAME'], args)

....
job.commit()

[ AWS ] CloudWatch로 경보알림 설정

 [ elasticach redis에 cpu / memory 70%이상 사용시 경보 ]


1. CloudWatch 접속

https://ap-northeast-1.console.aws.amazon.com/cloudwatch/home?region=ap-northeast-1#alarmsV2:alarm/elasticach-memory?

참조 : https://aws.amazon.com/ko/elasticache/redis/faqs/


2. 좌측경보메뉴 클릭 -> 경보생성


3. 해당지표 검색하여 경보생성

- CPU 관련 지표 : EngineCPUUtilization

- 메모리관련 지표 : DatabaseMemoryUsagePercentage


4. Amazon SNS에서 주제/구독 생성 및 확인


5. 구독시 설정한 메일에서 구독확인



지표 레지스터 정리표

https://docs.aws.amazon.com/ko_kr/elasticloadbalancing/latest/classic/elb-cloudwatch-metrics.html#loadbalancing-metrics-clb

[ Nifi ] Firebase Bigquery Nifi 연결

파이어베이스 BigQuery 설정

 https://spiralmoon.tistory.com/entry/Firebase-Firebase%EC%97%90-BigQuery-%EC%97%B0%EA%B2%B0%ED%95%98%EA%B8%B0


서비스계정만들기 

https://cloud.google.com/docs/authentication/getting-started?hl=ko


Bigquery jdbc driver jar 다운로드

https://dbschema.com/jdbc-driver/GoogleBigQuery.html

  • Required File(s): googlebigqueryjdbc42.jar
  • Java Driver Class: com.simba.googlebigquery.jdbc42.Driver
  • URL: jdbc:bigquery://https://www.googleapis.com/bigquery/v2:443;ProjectId={DB};OAuthType=1;
  • Website: Google Big Query

심바 JDBC PDF
file:///C:/Program%20Files/Simba%20ODBC%20Driver%20for%20Google%20BigQuery/Simba%20ODBC%20Driver%20for%20Google%20BigQuery%20Install%20and%20Configuration%20Guide.pdf


각 나이파이 lib디렉토리에
google-http-client-jackson2-1.28.0.jar
google-api-client-1.28.0.jar
GoogleBigQueryJDBC42.jar 
추가


구글클라우드콘솔
https://console.cloud.google.com/bigquery?project=zeliter-1337

Bigquery에 연결하는 7가지 방법
https://hevodata.com/learn/bigquery-etl-tools/#b7

[ Airflow ] 초기셋팅

예제Airflow실행하기

 https://aldente0630.github.io/data-engineering/2018/06/17/developing-workflows-with-apache-airflow.html


도커로 Airflow 실행하기

https://jybaek.tistory.com/922


Airflow Example 지우는 법

airflow.cfg or docker-compose.yml

load_examples = False


기본 명령어 

[ 목록 ]

airflow dags list

airflow tasks list tutorial

airflow tasks list tutorial --tree


[ 테스트 ]

airflow dags test tutorial '2021-11-08'

airflow tasks test tutorial print_date 2015-06-01


[ 백필 ]

airflow dags backfill tutorial \

    --start-date 2015-06-01 \

    --end-date 2015-06-07



Cloudera Manager [3] - 클러스터 교체시 주의할 점

 

CDH 서버 스펙업시

HDFS시스템을 꺼놓고 ec2유형변경을 하면 

다시 시작시 hdfs가 인식을 못할 경우가 있다.


HDFS가 다시 잡을 수 있게 시스템을 킨 상태에서

EC2종료후 유형변경 작업을 한다.

2021년 11월 7일 일요일

[ Docker ] 기본 명령어


[ 도커 실행 ]

docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]


$ docker run ubuntu:16.04

컨테이너 시작, 해당 컨테이너가 없다면 다운로드 후 컨테이너 생성 후 시작


$ docker run --rm -it ubuntu:16.04 /bin/bash

--rm : 프로세스가 종료되면 컨테이너도 삭제

-it : 터미널 입력을 위한 옵션

/bin/bash : 해당 컨테이너의 Bash Shell 접속


$ docker run -d -p 1234:6397 redis

-d : 백그라운드로 실행

-p : 포트연결, 1234의 호스트 포트를 6379의 컨테이너 포트로 연결

- redis test example 

    $ telnet localhost 1234

    set mykey hello

    +OK

    get mykey

    $2

    hello


$ docker run -d -p 3306:3306 -e MYSQL_ALLOW_EMPTY_PASSWORD=true --name mysql mysql:5.7

-e : 컨테이너 내에서 사용할 환경변수 (위 옵션 내용 = pwd없이 root계정 접속 )

--name : 컨테이너 이름 설정



[ 컨테이너 목록 확인 ]

docker ps [OPTIONS]

$ docker ps : 실행 중인 컨테이너 목록

$ docker ps -a : 실행 중 + 실행 종료된 컨테이너 목록


[ 컨테이너 중지 ]

docker stop [OPTIONS] CONTAINER [CONTAINER...]

$ docker stop ${DOCKER_CONTAINER_ID} : 다른 ID랑 중복되지 않는다면 64글자 다 적지 않아도 됨


[ 컨테이너 삭제 ]

docker rm [OPTIONS] CONTAINER [CONTAINER...]

$ docker rm ${CONTAINER_ID_1} ${CONTAINER_ID_2} : 여러 컨테이너 동시 삭제 가능

$ docker rm -v $(docker ps -a -q -f status=exited) : 중지된 컨테이너 전체 삭제


[ 이미지 목록 확인 ]

docker images [OPTIONS] [REPOSITORY[:TAG]] 

$ docker images : 다운로드한 이미지 목록 확인


[ 이미지 다운로드 ]

docker pull [OPTIONS] NAME[:TAG|@DIGEST]

$ docker pull ubuntu:14.04 : 이미지가 중복되면 최신버전으로 재 다운로드


[ 이미지 삭제 ]

docker rmi [OPTIONS] IMAGE [IMAGE...]

$ docker rmi ${IMAGE_ID}


[ 컨테이너 로그 보기 ]

docker logs [OPTIONS] CONTAINER

$ docker logs --tail 10 ${CONTAINER_ID}

$ docker logs -f 10 ${CONTAINER_ID} : 실시간 로그 생성 확인


[ 컨테이너 명령어 실행하기 ]

docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

: 실행 중인 컨테이너에 명령어 실행

$ docker exec -it mysql /bin/bash

$ mysql -uroot

mysql> show databases;


$ docker exec -it mysql mysql -uroot : 바로 mysql command line에 connect


[ 컨테이너 정보 보기 ]

docker inspect CONTAINER_ID


[ 볼륨 옵션 ]

mysql같은 경우 컨테이너가 삭제되면 해당 데이터도 삭제되기 때문에

데이터 볼륨을 컨테이너 외부 저장소( local, S3 등 )에 link연결


# before

$ docker run -d -p 3306:3306 -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql


# after

$ docker run -d -p 3306:3306 -e MYSQL_ALLOW_EMPTY_PASSWORD=true \

-v /my/local/datadir:/var/lib/mysql mysql



[ Compose ]

설정파일을 이용한 도커컴포즈

https://docs.docker.com/compose/


$ curl -L "https://github.com/docker/compose/releases/download/1.9.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

$ chmod +x /usr/local/bin/docker-compose : 권한변경

$ docker-compose version : 버전 확인

$ docker-compose up : 작성된 docker-compose.yml 파일 실행



참조 : https://subicura.com/2017/01/19/docker-guide-for-beginners-2.html