일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Windows
- JavaScript
- Ai
- 설정
- error
- MySQL
- API
- AWS
- unity
- docker
- 구글
- s3
- logstash
- nodejs
- ChatGPT
- Kibana
- Git
- elasticsearch
- build
- mariadb
- ssh
- 엘라스틱서치
- Linux
- 영어
- sample
- Python
- 유니티
- MSSQL
- JS
- Today
- Total
가끔 보자, 하늘.
Linux에 Jupyter Notebook 설치하기 본문
이 글에서는 Jupyter notebook 은 CentOS7에 설치하고 사용자들은 Windows로 접근한다고 가정하겠습니다. 그리고 elasticsearch, MariaDB(or MySQL) 에 연결하여 데이터를 검색하는 것까지 확인해 보겠습니다.
1. CentOS에 Jupyter notebook 설치하기
2. Windows에서 접속하기
3. Elasticsearch, MariaDB 연결하기
+a. 그래프 그려보기
1. CentOS에 Jupyter notebook 설치하기
Anaconda는 파이썬에서 다양한 가상환경을 쉽게 구축할 수 있으며, 머신러이, 데이터 분석 등에 필요한 패키지들을 포함하고 있는 파이썬 배포판입니다. 우선 Anaconda를 설치합니다.
> wget https://repo.anaconda.com/archive/Anaconda3-2021.11-Linux-x86_64.sh
> bash Anaconda3-2021.11-Linux-x86_64.sh
> source ~/.bashrc
# elasticsearch와 DB 연결을 위한 패키지를 설치합니다.
> pip install PyMySQL
> pip install elasticsearch
(* 최신 버전 다운로드 링크 >>> 여기!!)
> mkdir work # 작업용 폴더를 만들고 그 안에서 jupyter를 실행해야
# jupyter notebook의 root 디렉토리가 이 폴더로 한정되게 됩니다.
> cd work
> jupyter notebook &
> jupyter notebook --allow-root & # root 계정으로 실행할 경우
포트를 변경하지 않았다면 8888번 입니다. firewall-cmd로 8888번 접근을 허가하세요.
2. Windows에서 접속하기
jupyter notebook 을 실행할 때 접속 가능한 토큰이 포함된 주소를 출력합니다. 원격지라면 주소만 바꿔 접속하시면 됩니다. 서비스를 재시작하면 새로운 토큰이 발행되어 새로운 토큰값으로 재접속이 필요합니다. 만약 현재 서비스 중인 토큰값을 모른다면 서버에서 아래와 같이 확인이 가능합니다
첫 연결 이후에는 token을 제외한 주소로도 접속이 가능합니다.
3. Elasticsearch, MariaDB 연결하기
3-1. Elasticsearch 연결하기
from elasticsearch import Elasticsearch
# 보안 설정이 없다면 http_auth 옵션을 사용하지 않아도 됩니다.
es = Elasticsearch(["http://172.31.1.11:9200/"], http_auth=('jupyter','your_pw'))
res = es.search(index="logstash-2021.11.*", body = {'query':{'match_all':{}}}
print( res )
위와 같이 간단히 사용이 가능합니다. 원격지에서 접속할 경우 elasticsearch의 address 주소는 jupyter notebook이 실행되는 서버를 기준으로 ip가 작성하면 됩니다.
3-2. MariaDB( or MySQL) 연결하기
import pymysql
db = pymysql.connect(host='172.31.1.12',
port=3306,
user='jupyter',
password='your_passwd',
db='jupyter_db',
charset='utf8')
cur = db.cursor()
cur.execute("SELECT * from query_me")
for row in cur:
print(row)
db.close()
역시 host는 jupyter notebook이 실행되는 서버를 기준으로 설정하시면 됩니다.
+a. 그래프 그려보기
elasticsearch와 MariaDB에서 데이터를 가져와 하나의 그래프로 그린다고 가정해 보겠습니다.
import matplotlib.pyplot as plt
import seaborn as sns
.
.
.
label = ['01','02','03','04','05','06','07','08','09','10']
value1 = [175, 123, 74, 29, 45, 42, 47, 46, 45, 32]
value2 = [122, 58, 32, 14, 19, 23, 21, 20, 15, 17]
fig = plt.figure(figsize=(10,6), dpi=80)
colors = sns.color_palette('summer', len(label)) ## 바 차트 색상
xtick_label_position = list(range(len(label))) ## x축 눈금 라벨이 표시될 x좌표
ax1 = fig.add_subplot() ## axes 생성
ax1.set_xticks(xtick_label_position) ## x축 눈금
ax1.set_xticklabels(label) ## x축 눈금 라벨
ax1.bar(xtick_label_position, value1, color=colors) ## 바차트 출력
color = 'blue'
ax2 = ax1.twinx() ## 새로운 axis 생성
ax2.plot(xtick_label_position, values2, color=color, linestyle='--', marker='o') ## 선 그래프
ax2.tick_params(axis='y', labelcolor=color) ## 눈금 라벨 색상 지정
plt.xlabel('month', fontsize=12)
plt.title("그래프 두 개 같이 그려보기 ", fontsize=20)
plt.show()
만약 한글이 제대로 안나온다면...
CentOS에서는 anaconda3/lib/python3.9/site-packages/matplotlib/mpl-data/fonts/ttf/에 한글 폰트를 복사한 후 anaconda3/lib/python3.9/site-packages/matplotlib/mpl-data/matplotlibrc 내용 중 Axes 영역에서 unicode 사용을 위해 아래 내용을 추가합니다.
axes.unicode_minus : False
이제 jupyter notebook에서 해당 코드를 다시 실행하면 한글이 잘 나올겁니다. 만약 여전히 문제가 있다면 캐시 파일을 지운후 다시 실행해 보시기 바랍니다.
import matplotlib.font_manager as fm
font_list = fm.findSystemFonts(fontpaths = None, fontext = 'ttf')
print(font_list[:]) # 현재 설치된 폰트 리스트를 확인할 수 있습니다.
print(mpl.get_cachedir())
# /your home dir/.cache/matplotlib 이 출력됩니다.
# 해당 폴더에는 fontlist-v3xx.json과 유사한 파일이 존재하며
# 추가한 포트가 정상적으로 추가되었다면 해당 폰트가 이 파일에 등록되어 있을겁니다.
# 한글 출력에 문제가 있다면 이 파일을 삭제 후 코드를 다시 실행하면 한글이 잘 나올겁니다.
정리해두면 별거 아닌데 모를때는 한참을 해매기도 하네요. 도움이 되셨기를 바라며, 불금 즐기러 갑니다. :)
'개발 이야기 > DB, 데이터분석, AI' 카테고리의 다른 글
MSSQL 복구 시 연결된 사용자 문제 처리 (0) | 2022.08.09 |
---|---|
MySql(MariaDB) binary logs 관리 (0) | 2021.12.02 |
S3에 스냅샷 생성 및 복원 (2) | 2021.02.22 |
PyCharm 에서 Mecab 설치 및 사용 방법 (0) | 2021.02.22 |
gmail 첨부파일을 자동으로 가져오기 (0) | 2021.02.03 |