본문 바로가기
반응형

Data Base103

[MongoDB] : Spring Boot 웹 크롤링하여 MongoDB에 데이터 넣고 조회하기 웹 크롤링을 위해서 먼저 해당 페이지가 웹 크롤링을 해도 되는 페이지인지 확인하기 위해 사이트 주소 뒤에 /robots.txt 붙여 확인한다. https://www.melon.com/robots.txt chart 크롤링이 허용되어 있다. Disallow로 명시되어 있으면 크롤링을 할 수 없다. 멜론 차트 탑 100을 수집하고 저장한다. 저장한 차트를 조회한다. 가수별 차트에 등록된 노래 수를 카운트한다. Online JSON Viewer Online JSON Viewer jsonviewer.stack.hu JSON 웹 뷰어에서 조금 더 편하게 볼 수 있다. 코드는 아래 링크에서 확인이 가능하다. https://ohju96.notion.site/TOP-100-2011fd56ff7547a2b1e15682e5.. 2022. 4. 23.
[MongoDB] : Spring Boot 연동 및 MongoDB Test Code 작성 Spring Initializr 먼저, 위 페이지에서 Spring Boot 프로젝트를 생성해 준다. 버전 체크하고 의존성을 추가한다. 나중에 Redis도 사용할 예정이라 추가해주었다. Redis를 할 필요가 없다면 굳이 체크하지 않아도 된다. 이제 프로젝트를 임포트하고 웹 크롤링을 위한 라이브러리를 추가해 주어야 한다. jsoup 라이브러리를 사용하는데 프로젝트를 만드는 곳에서 따로 지원을 안 하는 것 같다. implementation 'org.jsoup:jsoup:1.14.3' dependencies{} 안에 추가해 주면 된다. 이제 MongoDB랑 Spring Boot랑 연동을 해줘야 한다. # MongoDB 연동 spring.data.mongodb.host=192.168.228.142 spring... 2022. 4. 22.
[MongoDB] : Data Grip으로 MongoDB 외부 접속하기 외부 접속을 위해 방화벽을 먼저 해제해야 한다. CentOS에서 MongoDB 설치 및 셋팅하기 CentOS에서 MongoDB 설치 및 셋팅하기 yum 레포지토리 생성을 통한 설치와 tar.gz 압축된 파일 설치가 있다. yum을 통한 설치가 환경 변수 설정이나 관리가 수월해서 추천한다. www.notion.so 위 링크에서 맨 아래 부분에 보면 방화벽 설정하는 방법을 참고한다. MongoDB를 선택해 열어준다. 이름 붙여주고 Host는 ifconfig 명령어로 체크하고 적어준다. → Test Connection을 눌러 성공이 뜨면 OK를 누른다. db.createUser({ user:'root', pwd:'1234', roles:['root'] }) admin을 우클릭해서 쿼리 콘솔을 열어주고 root.. 2022. 4. 22.
[MongoDB] : CentOS에서 MongoDB 설치 및 셋팅하기 yum 레포지토리 생성을 통한 설치와 tar.gz 압축된 파일 설치가 있다. yum을 통한 설치가 환경 변수 설정이나 관리가 수월해서 추천한다. MongoDB는 CentOS에서 기본적으로 제공하는 레포지토리에 존재하지 않아 yum install 명령어를 사용해도 레포지토리에 존재하지 않아 설치가 불가능하다. 때문에 CentOS에서 사용 가능한 레포지토리를 생성해야 한다. Ubuntu에서는 따로 레포지토리를 생성하지 않아도 된다. vi /etc/yum.repos.d/mongodb-org-5.0.repo vi 편집기로 레포지토리 정보를 생성해준다. 아래 내용을 입력해 준다. [mongodb-org-5.0] name=MongoDB Repository baseurl=https://repo.mongodb.org/.. 2022. 4. 22.
[MongoDB] : MongoDB란? MongoDB는 NoSQL에서 가장 많이 사용되는 데이터베이스이다. 높은 수준의 Java 기반의 API를 제공하고 Spring Framework와 연동이 가능하다. MongoDB 버전은 Community Server와 Enterprise Server 가 있다. Enterprise Server 의 추가 기능은 아래와 같다. In-memory Storage Engine : RedisDB랑 비슷하게 데이터 저장소를 메모리로 사용 가능하다. Encrypted Storage Engine : 저장된 데이터를 암호화 할 수 있다. Advanced Security : LDAP, Kerveros를 통한 접근 제어가 가능하다. MongoDB의 4.xx 버전의 변화는 아래와 같다. ACID(원자성, 일관성, 고립성, 지속성.. 2022. 4. 22.
[Hadoop] : 하둡 동작 테스트 - Master Server 📌 마스터 서버에서 hadoop 사용자로 해야 한다. touchz로 0바이트 크기의 파일을 업로드한다. hadoop fs -touchz /test hadoop fs -ls / 이렇게 나온다. 하둡은 시작 완료 되는데 시간이 좀 걸린다 때문에 아래 명령어로 하둡의 데몬이 모두 실행되었는지 확인하고 싶다. 간단한 확인 방법은 하둡의 네임 노드 데몬은 시작 시간이 가장 오래걸리기 때문에 9000 포트가 실행되면 완료인 것을 알 수 있다. netstat -ntlp | grep java 만약 하둡 장애가 발생하면 실행 로그를 봐야한다. 네임노드 로그와 데이터 노드 로그를 보면 된다. 하둡에 사용되는 리소스를 관리하기 위해 하둡 리소스 매니저를 사용하는데 웹 기반으로 동작한다. 아래 포트 번호를 입력해서 접속해 본.. 2022. 4. 21.
[Hadoop] : 하둡 시작할 때 실행되는 데몬들 jps 명령어를 사용한다. 마스터 서버에서 hadoop 사용자로 시작한다. jps 아래와 같이 나오게 된다. 슬레이브 서버 1에서 root 사용자로 시작한다. jps 슬레이브 서버 2에서 root 사용자로 시작한다. jps 각 슬레이브 서버에 아래와 같이 나와야 한다. 만약, 아래와 같이 나오지 않으면 ssh Key 오류를 의심해 보자. https://ohju96.notion.site/8d7cbf11f9744820b9d9e8aaa9e28818 하둡 시작할 때 실행되는 데몬들 jps 명령어를 사용한다. ohju96.notion.site 2022. 4. 21.
[Hadoop] : 하둡 시작 - Master Server 마스터 서버에서 hadoop 계정으로 실행한다. sbin 디렉토리의 start-all.sh를 실행한다. cd /usr/local/hadoop/sbin/ ./start-all.sh https://ohju96.notion.site/Master-Server-6b396795ee6a490abb321f7a5fabfa85 하둡 시작 - Master Server 마스터 서버에서 hadoop 계정으로 실행한다. ohju96.notion.site 2022. 4. 21.
[Hadoop] : 하둡 방화벽 포트 열기 - Slave Server 2 마스터 서버는 데이터를 저장하기 위해 슬레이브 서버2의 데이터 노드에 파일을 전송한다. 데이터 노드가 사용하는 포틍니 50010번 포트의 방화벽을 해제해야 한다. 아래 코드는 슬레이브 서버 2에만 적용한다. sudo firewall-cmd --permanent --zone=public --add-port=50010/tcp sudo firewall-cmd --reload sudo firewall-cmd --list-all 적용을 확인한다. 2022. 4. 21.
[Hadoop] : 하둡 방화벽 포트 열기 - Slave Server 1 마스터 서버는 데이터를 저장하기 위해 슬레이브 서버 1의 데이터 노드에 파일을 전송한다. root 사용자에서 시작한다. 이 코드는 슬레이브 서버1, 2 중에서 슬레이브 서버 1에만 적용한다. (아래서 슬레이브 서버 2도 똑같이 하긴 한다. ) master Server, Slave Server1, 2 설정하기 master Server, Slave Server1, 2 설정하기 마스터 서버, 슬레이브1,2 서버의 호스트 네임을 변경해준다. www.notion.so 데이터 노드가 사용하는 포트인 50010번 포트의 방화벽을 해제해야 한다. sudo firewall-cmd --permanent --zone=public --add-port=50010/tcp sudo firewall-cmd --reload sudo .. 2022. 4. 21.
[Hadoop] : 하둡 방화벽 포트 열기 - MasterNode 슬레이브 서버는 마스터 노드의 네임 노드와 통신하며 데이터를 저장한다. 네임 노드 포트는 9000번 포트로 방화벽을 해제해야 한다. 하둡 관리를 위한 리소스매니저는 8088포트로 이것도 방화벽을 해제해 줘야 한다. 중요한 점은 꼭! ⭐ hadoop 계정으로 실행 ⭐ 해야 한다. 리소스 매니저 8088 방화벽 포트와 네임 노드 9000 방화벽 포트를 열고 방화벽을 적용하고 방화벽을 확인한다. sudo firewall-cmd --permanent --zone=public --add-port=8088/tcp sudo firewall-cmd --permanent --zone=public --add-port=9000/tcp sudo firewall-cmd --reload sudo firewall-cmd --lis.. 2022. 4. 21.
[Hadoop] : 하둡 NameNode 포멧 - Master Server 하둡에 저장되는 데이터는 네임노드와 데이터노드에 저장한다. 네임노드는 데이터노드에 저장되는 위치 등 메타 정보를 저장하고 실제 데이터는 데이터 노드에 저장한다. 하둡에 데이터를 저장하기 위해 반드시 네임노드를 하둡분산파일시스템에 맞게 저장 방식을 포멧해야 한다. 중요한 점은 꼭! ⭐ hadoop 계정으로 실행 ⭐ 해야 한다. root 계정으로 실행하면 네임 노드 폴더를 삭제하고 다시 네임 노드로 포멧해야 한다. root로 실행한 경우 해결법 cd / chown -R hadoop:hadoop /data 권한을 다 바꿔주고 하둡을 껐다가 키면된다. 아래 코드를 모든 Server에서 실행해야 한다. 마스터, 슬레이브1, 슬레이브2 등.. 아래 코드는 Master Server에서만 진행한다. root 계정에서 .. 2022. 4. 21.
[Hadoop] : 하둡 Slave Server 설정 - Masger Server 마스터 서버에서 사용할 데이터 노드 역할을 수행하는 서버들을 설정한다. 아래 경로로 들어간다. cd /usr/local/hadoop/etc/hadoop 편집기를 열어준다. vi slaves or vi /usr/local/hadoop/etc/hadoop/slaves 마스터 노드도 데이터 노드 역할을 수행하도록 설정하여 데이터 3중화 수행한다. 하둡은 데이터가 저장되면 기본 3중화를 실행한다. master slave1 slave2 이렇게 적어준다. 2022. 4. 21.
[Hadoop] : 하둡 Slave Server 1, 2 설정하기 슬레이브 서버 1,2 모두 같게 적용한다. hadoop-env.sh 설정 파일 위치로 이동한다. cd /usr/local/hadoop/etc/hadoop 편집 모드를 실행한다. vi hadoop-env.sh 이 코드를 수정해야 한다. 위 빨간 박스를 아래 코드로 바꿔준다. export JAVA_HOME=/usr/local/java 아래로 또 내려보면 이렇게 주석이 처리된 부분을 수정해 줘야한다. 위 빨간 박스를 아래 코드로 바꿔준다. export HADOOP_LOG_DIR=/data/hadoop/log 이렇게 바꿔 넣어주면 된다. 이제 wq 명령어로 저장하고 편집 모드를 종료한다. core-site.xml 도 편집 모드를 열어 수정한다. vi core-site.xml 아래 코드를 넣어준다. 위에서부터 하.. 2022. 4. 21.
[Hadoop] : 하둡 Master Server 설정하기 마스터 서버와 슬레이브 서버1,2 환경 설정은 거의 동일하지만 마스터 서버는 네임 노드를 가지고 있다. 따라서 마스터 서버는 네임 노드 설정 관련 내용을 포함하고 슬레이브 서버 1,2는 네임 노드를 설정하지 않는다. 마스터 서버에만 아래 설정을 진행한다. hadoop-env.sh 에서 자바 설치 위치를 설정한다. 하둡 실행의 전반적인 설정이다. cd /usr/local/hadoop/etc/hadoop ll | grep hadoop-env.sh vi hadoop-env.sh vi 편집기로 접속해 아래 내용을 수정해준다. 위 빨간 박스 내용을 아래 코드로 바꿔준다. export JAVA_HOME=/usr/local/java 아래로 더 내리면 아래 처럼 주석 처리가 된 부분이 있다. 하둡에서 발생되는 로그 위.. 2022. 4. 21.
[Hadoop] : 하둡 저장 디렉토리 생성 및 권한 부여하기 하둡 데이터 저장 디렉토리와 로그 저장 디렉토리를 생성해 준다. 마스터 서버와 슬레이브 서버1,2 모두 다 생성을 한다. mkdir -p /data/hadoop/data mkdir -p /data/hadoop/log hadoop 계정이 사용할 수 있게 권한을 부여한다. chown -R hadoop:hadoop /data/ 아래 경로에 가서 정상적으로 생성이 되었는지 확인한다. cd /data/hadoop ll https://ohju96.notion.site/4f290f30ad4a4233be715b277d67be03 하둡 저장 디렉토리 생성 및 권한 부여 하둡 데이터 저장 디렉토리와 로그 저장 디렉토리를 생성해 준다. ohju96.notion.site 2022. 4. 21.
[Hadoop] : 하둡 디렉토리 구조 파악하기 아래 노션 페이지에서 확인할 수 있다. https://ohju96.notion.site/Hadoop-610a079e2186416ca1bb92f2d3fa8823 Hadoop 디렉토리 구조 A new tool for teams & individuals that blends everyday work apps into one. ohju96.notion.site 2022. 4. 21.
[Hadoop] : CentOS에 하둡 설치하기 하둡 2.10.x 버전 특징이 있다. 필수 핵심 코어가 증가했다. 변경 전에는 맵리듀스, 하둡분산파일시스템, 변경 후에는 맵리듀스, 하둡분산파일시스템, 얀 YARN(얀)의 특징은 잡 스케줄링과 클러스터 자원 관리이다. 리눅스 파일은 전송 후 반드시 크기를 확인한다. 네트워크 문제로 가끔 100% 완벽하게 파일 전송이 안 되는 경우가 있기 때문이다. 하둡 설치는 root 계정을 통해 설치하는 것이 편리해 root 접속해 파일 업로드 및 설치한다. 마스터 서버, 슬레이브 서버1,2 모두 다 업로드한다. su - cd /usr/local/ rz hadoop-2.10.1.tar.gz 파일이 정상적으로 들어온 것을 확인한다. 이때, Java는 7~8버전이 설치되어 있어야 한다. Java8 버전을 추천한다. jav.. 2022. 4. 21.
[Hadoop] : CentOS에 Java 설치하기 이제 서버 3대 전부 다 Java를 설치한다. Java는 반드시 1.8 버전을 다운로드한다. 리눅스 64비트 버전을 다운로드하면 된다. Download the Latest Java LTS Free 다운 받은 java를 서버로 옮겨주기 위해 2가지 방법이 있다. 첫 번째 방법이다. 다운로드 후 WinSCP로 local에서 마스터 서버로 옮겨주었다. 경로는 /usr/local이다. 두 번째 방법이다. cd /usr/local/ rz rz로 java를 가져오면 된다. putty에서는 안 된다고 하는 것 같다. xShell을 사용하자.. 파일을 받아 왔으면 다음을 진행한다. 자바 파일 압축을 해제한다. root 사용자에서 입력하자. tar -zxvf jdk-8u201-linux-x64.tar.gz jdk1.8... 2022. 4. 20.
[Hadoop] : Master Server에서 Slave Server로 SSH 접속하기 파일 전달을 완전히 마쳤으면 이제 마스터 서버에서 슬레이브 서버로 SSH 접속을 한다. ssh slave1 ssh slave2 ssh master ssh 호스트네임으로 접속할 수 있다. 마스터 서버에서 hadoop 계정으로 SSH 통신을 통해 슬레이브 서버1, 2에 접속이 가능해야 한다. 그래야 마스터 서버가 슬레이브 서버1, 2에 하둡의 데이터 노드 데몬을 실행 및 중지 명령을 내릴 수 있게 된다. 2022. 4. 20.
[Hadoop] : 하둡 외부 접속 및 SSH 생성 모든 서버를 xShell을 통해 SSH 접속을 한다. ifconfig 마스터 서버 SSH키를 생성해야 한다. 마스터 서버는 데이터 노드 역항르 하는 슬레이브 서버에 SSH 접속을 통해 데이터 노드 시작 등 역할을 수행한다. 마스터 서버에서 슬레이브 서버 접속이 가능하도록 SSH 통신에 사용할 키 교환을 수행해야 한다. 반대로 슬레이브 서버에서는 마스터 서버로 접속이 필요하지 않다. 키 수정은 상당히 번거로워서 절대 오타를 내면 안된다. ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa; \\ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys; \\ chmod 0600 ~/.ssh/authorized_keys 생성된 키 권한은 600으로 설정한다... 2022. 4. 20.
반응형