2021년 6월 12일 토요일

우분투에 스파크 spark 3.1.2 설치

참조 : https://computingforgeeks.com/how-to-install-apache-spark-on-ubuntu-debian/

1. 자바 설치

sudo apt install curl mlocate default-jdk -y

java -version


2. 아파치 스파크 다운로드

https://archive.apache.org/dist/spark/에서 버전확인

curl -O https://archive.apache.org/dist/spark/spark-3.1.1/spark-3.1.1-bin-hadoop3.2.tgz

tar -xvzf spark-3.1.1-bin-hadoop3.2.tgz

sudo mv spark-3.1.1-bin-hadoop3.2/ spark 


3. path 설정

nano .bashrc

----------

export SPARK_HOME=/home/stat/spark

export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin

-----------

source ~/.bashrc


4. master server 작동

start-master.sh 

sudo ss -tunelp | grep 8080


5. Worker Process 작동

start-worker.sh spark://ubuntu:7077

sudo updatedb

locate start-worker.sh

* 웹페이지 확인 localhost:8080


6. python 쉘명령어 사용

pyspark

도움말 help()

종료 exit()


7. Spark shell 명령 사용

spark-shell

:help

:quit


8. 정지시 stop-worker.sh, stop-master.sh 순으로 정지 



하둡 3.2.1과 Mysql과 함께 Apache-hive-3.1.2 설치

 참조 : http://hive.apache.org , http://hisoftlab.com/4907


1. 아파치 홈페이지에서 다운로드 http://hive.apache.org

하둡 3.X 대는 Hive도 3.x대로 다운로드


2. 압축해제 및 설치

tar xvzf apache-hive-3.1.2-bin.tar.gz

mv apache-hive-3.1.2-bin/ hive


3. path 환경설정

nano .bashrc

------- 아래내용 입력

## Hive setup

export HIVE_HOME=/home/stat/hive

export PATH=$PATH:$HIVE_HOME/bin

--------

source .bashrc


4. hive-env.sh 환경설정 

cd $HIVE_HOME/conf

cp hive-env.sh.template hive-env.sh

nano hive-env.sh

--------아래

HADOOP_HOME=/home/stat/hadoop

----------

5. mysql connector 다운 및 설치

mysql jar 파일 다운로드

wget https://downloads.mysql.com/archives/get/p/3/file/mysql-connector-java-5.1.46.zip

unzip mysql-connector-java-5.1.46

cp mysql-connector-java-5.1.46/mysql-connector-java-5.1.46-bin.jar /usr/local/hive/lib


6. hive-site.xml 설정

nano hive-site.xml

-----

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>

    <property>

        <name>hive.metastore.local</name>

        <value>true</value>

    </property>

    <property>

        <name>javax.jdo.option.ConnectionURL</name>

    <value>jdbc:mysql://localhost:3306/hive?allowPublicKeyRetrieval=true&amp;useSSL=false&amp;createDatabaseIfNotExist=true</value>

    </property>

    <property>

        <name>javax.jdo.option.ConnectionDriverName</name>

        <value>com.mysql.jdbc.Driver</value>

    </property>

    <property>

        <name>javax.jdo.option.ConnectionUserName</name>

        <value>mysql서버사용자id</value>

    </property>

    <property>

        <name>javax.jdo.option.ConnectionPassword</name>

        <value>mysql서버 사용자패스</value>

    </property>

</configuration>

-----------

## mysql 계정이 없으면 아래처럼 생성

mysql>create user '사용자id'@'localhost' identified by '사용자패스';

mysql>GRANT ALL PRIVILEGES ON *.* TO '사용자id'@'localhost';

flush privileges;

7. 디렉토리 생성

hdfs dfs -mkdir /tmp

hdfs dfs -mkdir /user

hdfs dfs -mkdir /user/hive

hdfs dfs -mkdir /user/hive/warehouse

hdfs dfs -chmod g+x /tmp

hdfs dfs -chmod g+x /user/hive

hdfs dfs -chmod g+x /user/hive/warehouse


8. schematool 띄우기

schematool -dbType mysql -initSchema

# 이미 실행해서 실패한 경우 mysql에서

drop database hive; 하고 시행해야 함


9. 하이브 실행

hive


10. 만약 아래와 같은 오류 발생시 조치
# hive error Exception in thread "main" java.lang.NoSuchMethodError
ls -al $HIVE_HOME/lib/guava-*
ls -al $HADOOP_HOME/share/hadoop/common/lib/guava-*
rm /home/stat/hive/lib/guava-19.0.jar
cp $HADOOP_HOME/share/hadoop/common/lib/guava-* $HIVE_HOME/lib/

2021년 6월 9일 수요일

우분투 20.04서버와 ssh-keygen을 사용하여 RSA key pairing으로 원격접속

1. 조건 : local 서버의 myid와 remote 서버의 myid가 같고 방화벽 port22 개방

2. /etc/hosts에 remote 서버의 ip주소와 hostname을 입력 설정

192.168.219.111 remote


3. ssh Key 생성

ssh-keygen -t rsa

scp ~/.ssh/id_rsa.pub myid@remote:id_rsa.pub1


4.접속 대상 myid@remote로 이동

cat ~/id_rsa.pub1 >> ~/.ssh/authorized_keys


5. 이제 내 서버에서 remote 서버로 접속 가능

ssh remote

2021년 6월 7일 월요일

Ubuntu 20.04환경과 Java-1.8.0 버전으로 Hadoop-3.3.0 cluster 2개 노드 설치 방법

참조 : https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/ClusterSetup.html

https://linuxconfig.org/ubuntu-20-04-hadoop


2개 노드 구성 : 2개의 데이터노드

node1 : namenode, datanode, resourcemanager, nodemanagers

node2: secondary namenodes, datanode, nodemanagers


sudo apt update


1. 기본적으로 java 8버전은 Apache Hadoop 3.x 버전을 지원할 수 있음

sudo apt install openjdk-8-jdk -y

java -version; javac -version

#버전이 1.8.0_252


2. openssh 설치

sudo apt install ssh 

ssh localhost

sudo apt install openssh-server openssh-client -y


3. /etc/hosts 설정  

sudo nano /etc/hosts

--------------------

127.0.0.1 localhost

192.168.219.101 node1

192.168.219.102 node2

----------------------

필요시 hadoop 사용자 생성

sudo adduser hadoop

su -hadoop

* node1 사용자와 node2 사용자 계정이 동일해야함


4. 패스워드 없이 로그인 설정 : authorized_keys에 양쪽것 모두 추가

ssh-keygen -t rsa 

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys # 내 것 추가

scp ~/.ssh/id_rsa.pub ndoe2:

ssh node2 옮겨서 

cat ~/id_rsa.pub1 >> ~/.ssh/authorized_keys # 상대것 추가

* node2 것을 node1에도 추가하고, 자신 것도 추가


5. 하둡 설치

참조 : https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/ClusterSetup.html


# https://hadoop.apache.org/releases.html 접속 버전확인

wget https://downloads.apache.org/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz

tar xvzf hadoop-3.3.0.tar.gz

mv hadoop-3.3.0 hadoop

nano .bashrc

----- 아래 환경설정  입력

#java home setup

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64

export PATH=$PATH:$JAVA_HOME/bin


#Hadoop Related Options

export HADOOP_HOME=/home/hadoop/hadoop

export HADOOP_INSTALL=$HADOOP_HOME

export HADOOP_MAPRED_HOME=$HADOOP_HOME

export HADOOP_COMMON_HOME=$HADOOP_HOME

export HADOOP_HDFS_HOME=$HADOOP_HOME

export YARN_HOME=$HADOOP_HOME

export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native

export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native"

----------------------

source ~/.bashrc


6. hadoop-env.sh 환경설정 

nano hadoop/etc/hadoop/hadoop-env.sh

---------------위의 파일 들어가서 아래 주석부분 밑에 자바 홈 활성화

# The java implementation to use. By default, this environment

# variable is REQUIRED on ALL platforms except OS X!

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64

-----------------

# 하둡과 자바 설정 확인

hadoop version

java -version


7. core-site.xml 파일 수정

nano hadoop/etc/hadoop/core-site.xml

------------- 아래 내용 입력

<configuration>

    <property>

        <name>fs.defaultFS</name>

        <value>hdfs://node1:9000</value>

    </property>

</configuration>


8.  hdfs-site.xml 파일 수정

nano hadoop/etc/hadoop/hdfs-site.xml

---------# 아래내용

<configuration>

    <property>

            <name>dfs.namenode.name.dir</name>

            <value>/home/hadoop/hdfsdata/nameNode</value>

    </property>

    <property>

            <name>dfs.datanode.data.dir</name>

            <value>/home/hadoop/hdfsdata/dataNode</value>

    </property>

    <property>

        <name>dfs.replication</name>

        <value>2</value>

    </property>

    <property>

        <name>dfs.namenode.secondary.http-address</name>

        <value>node2:50090</value>

    </property>

</configuration>

--------------------

9. yarn-site.xml 파일 수정

nano hadoop/etc/hadoop/yarn-site.xml

----------------#

<configuration>

    <property>

            <name>yarn.resourcemanager.hostname</name>

            <value>node1</value>

    </property>

    <property>

            <name>yarn.nodemanager.aux-services</name>

            <value>mapreduce_shuffle</value>

    </property>

</configuration>

---------------

 10. mapred-site.xml 파일 수정

nano hadoop/etc/hadoop/mapred-site.xml

-------------#

<configuration>

    <property>

            <name>mapreduce.framework.name</name>

            <value>yarn</value>

    </property>

</configuration>

----------------

11. workers 설정

nano hadoop/etc/hadoop/workers

node1

node2


## node1에서 node2로 설정파일 일괄적으로 보내기

rsync -avzh ~/hadoop/etc/hadoop/* node2:/home/hadoop/hadoop/etc/hadoop/

또는 

scp ~/hadoop/etc/hadoop/* node2:/home/hadoop/hadoop/etc/hadoop/


12.  HDFS NameNode 포맷/ Start Hadoop Cluster

hdfs namenode -format


start-dfs.sh

start-yarn.sh

jps # 자바 프로세스 5개 확인

또는 start-all.sh로 동시실행  

node1에서 jps 명령 입력하면 5개 프로세스 확인

--------------

 10289 ResourceManager

10452 NodeManager

10838 Jps

10010 DataNode

9852 NameNode

--------------
ssh node2에서 jps 명령입력시 4개 프로세스 확인
----------
5648 DataNode
6372 Jps
5959 NodeManager
5817 SecondaryNameNode
------------

13. 실행상태 확인 

hdfs dfsadmin -report로 확인 가능하고

브라우저는 아래로 확인 

node1:9870 # hadoop name node

node2:9864 # DataNodes

node1:8088 #  YARN Resource Manager

* 필요시 namenode 리프레쉬 명령

hadoop dfsadmin -refreshNodes


14. 혹시 설정 변경 후 다시 시행하려면 namenode 포맷 전에 node1과 node2에서 기존 자료 삭제

rm -rf  hdfsdata

hdfs namenode -format


 15. 필요시 실행 정지 일괄은 stop-all.sh

구분은 stop-yarn.sh, stop-dfs.sh 순으로


 16. 기타 명령어 데이터 디렉토리 생성 및 입력

hdfs dfs -mkdir /user

hdfs dfs -mkdir /user/your-id

hdfs dfs -mkdir text

wget http://167.179.112.24/blog/wp-content/uploads/2021/06/names.csv

hdfs dfs -put *.csv text

hdfs dfs -ls text 

hdfs dfsadmin -report


2021년 5월 17일 월요일

재미있는 통계 무료 프로그램 Orange

 홈페이지 : https://orangedatamining.com/


python 설치프로그램 pip3로 설치 가능


설치 pip3 install orange3

실행 python3 -m Orange.canvas


사용법: 아주 간단하게 쓸수 있음 
유튜브 내용 확인  : https://www.youtube.com/channel/UClKKWBe2SCAEyv7ZNGhIe4g

jamovi 통계 프로그램 설치

 통계 무료프로그램 jamovi 홈페이지 : https://www.jamovi.org/

1.설치를 위해 Flatpak을 먼저 설치

 sudo apt install flatpak

 sudo apt install gnome-software-plugin-flatpak

 flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo


 2. 재부팅

 sudo reboot

 

3. jamovi 설치

 flatpak install flathub org.jamovi.jamovi


4. jamovi 실행

 flatpak run org.jamovi.jamovi

2021년 5월 6일 목요일

Hadoop 설치와 운용 : VirtualBox환경에서 우분투 16.04 두개를 이용해서 설치

 1. 설치 환경 : Virtualbox 6.1, Ubutu 16.04, hadoop 2.6.5, JAVA jdk1.8

가장먼저 내 Virtualbox에 하나의 Ubuntu 16.04 OS를 설치하여, java jdk1.8을 설치해주고, hadoop 2.6.5를 설치해주고, 환경설정과 ssh 키 생성까지 완료한다.

그리고 이 pc를 virtualbox에서 복제해서 하나의 pc를 더준비하고 ssh-copy-id로 공유환경설정 후 하둡환경을 설정한다.

기본적으로 두개의 서버를 활용하는 개념으로 구성하였으며 설치전략은 doop1 서버에는 NN, DN, RM, NM를 운용하고 doop2 서버에는 DN, NM, SNN를 운용하는 개념으로 준비한다.

이후 start-all.sh 실행시킨 후 여러 가지 모니터링 방법을 확인한다.  


2. 내 pc에 필요한 설치파일 다운로드 

가. https://releases.ubuntu.com/16.04/ :

ubuntu os ubuntu-16.04.7-desktop-amd64.iso 다운로드

나. https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html :

oracle jdk 1.8 찾아서 jdk-8u291-linux-x64.tar.gz 다운로드

다. http://archive.apache.org/dist/ : 

archive.apache.org 에서 common에서 hadoop2.6.5.tar.gz 다운로드

라. 가상머신에서 우분투 서버나 pc가 준비되면 scp를 이용해 아래와 같이 전송해준다. 

scp jdk-8u291-linux-x64.tar.gz hdc@192.168.219.111:downloads

scp hadoop-2.6.5.tar.gz hdc@192.168.219.111:downloads


3. VirtualBox에 하나의 Ubuntu PC 준비

가. 우분투 설치

가상 우분투 PC 설치 환경 : 메모리 1536정도, vmdk 선택, 용량 20G정도,  

설치후 storage IDE 우분투 데스크탑 iso 연결, 네트워크 어뎁처브리지 선택

OS 설치간에 이름 doop1, id hdc 로 설정 설치완료 후 

sudo passwd 설정

ifconfig # 네트워크 주소 확인

ufw disable # 방화벽 제거

apt install wget 

apt install openssh-server # ssh 통신가능토록 설치

visudo에서 hdc를 root 사용자와 동일 권한 부여 설정 및 저장

hdc   ALL=(ALL:ALL) ALL

ping 192.168.219.104 # 확인후 ctrl+c 

설치할 java hadoop 파일 가져오기 : 내 pc 터미널에서 

scp jdk-8u291-linux-x64.tar.gz hdc@192.168.219.111:downloads

scp hadoop-2.6.5.tar.gz hdc@192.168.219.111:downloads


나. java 설치

sudo apt install openjdk-8-jdk -y

java -version


다. hadoop 설치 hdc 계정에서 

cd /usr/local

tar -xvf /home/hdc/downloads/hadoop-2.6.5.tar.gz

ln -s hadoop-2.6.5 hadoop

chown -R hdc:hdc hadoop*

cd


라. 환경설정

nano .bashrc ##for examples 밑에 추가

-----------

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_291

export PATH=$PATH:$JAVA_HOME/bin

export HADOOP_INSTALL=/usr/local/hadoop

export PATH=$PATH:$HADOOP_INSTALL/bin

export PATH=$PATH:$HADOOP_INSTALL/sbin

--------

source .bashrc

java -version

hadoop version

su - hdc 

나와서 동일하게 .bashrc 설정


마. 인증키 생성 

ssh-keygen -t rsa -P ""

ll .ssh


4. 복제 ubuntu pc 준비

가. virtualBox에서 우측마우스로 복제, 이름 doop2, 모든 네트워크 어뎁터의 새 MAC 주소 생성 선택, 완전한 복제

ifconfig # 네트워크 새주소 확인

hostnamectl set-hostname doop2

sudo su  # host 변경확인가능

nano /etc/hosts  # localhost 밑에 doop1, doop2 추가

-----

127.0.0.1 localhost

192.168.219.111 doop1

192.168.219.112 doop2

------

reboot # 재부팅하여 화면 최소화 내려놓기

## doop1 pc도 nano /etc/hosts 파일 수정


나. 두개의 pc를 모두 가동시킨 상태에서 내 피시 터미널로 doop1 작업

ssh hdc@192.168.219.111

ssh-copy-id -i $HOME/.ssh/id_rsa.pub hdc@doop2

자체 인증 설정

cat $HOME/.ssh/id_rsa.pub>>$HOME/.ssh/authorized_keys

ssh doop1 등으로 로그인 가능


다. hadoop 환경 설정

cd /usr/local/hadoop/etc/hadoop


설치전략 doop1번 : NN, DN, RM, NM

doop2번 : DN, NM(노드매니저),SNN(세컨드내임노드)

해당파일 설정시 아래의 property들을 <configuration></configuration> 사이에 붙여넣는다.


설정1 : nano core-site.xml

-----------

<property>

<name>fs.defaultFS</name>

<value>hdfs://doop1:9000</value>

</property>

-------

설정 2:

mv mapred-site.xml.template mapred-site.xml

nano mapred-site.xml

-----------

<property>

<name>mapreduce.framework.name</name>

<value>yarn</value>

</property>

---------

설정3:

nano hdfs-site.xml

-----

<property>

<name>dfs.replication</name>

<value>2</value>

</property>


<property>

<name>dfs.namenode.name.dir</name>

<value>/abc/name</value>

</property>


<property>

<name>dfs.datanode.data.dir</name>

<value>/abc/data</value>

<final>true</final>

</property>


<property>

<name>dfs.namenode.http-address</name>

<value>doop1:50070</value>

</property>


<property>

<name>dfs.namenode.secondary.http-address</name>

<value>doop2:50090</value>

</property>

-------------

설정4:

nano yarn-site.xml

--------------------

<property>

<name>yarn.resourcemanager.address</name>

<value>doop1:9001</value>

</property>


<property>

<name>yarn.resourcemanager.resource-tracker.address</name>

<value>doop1:8031</value>

</property>


<property>

<name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>

<value>org.apache.hadoop.mapred.ShuffleHandler</value>

</property>


<property>

<name>yarn.nodemanager.aux-services</name>

<value>mapreduce_shuffle</value>

</property>


<property>

<name>yarn.nodemanager.pmem-check-enabled</name>

<value>false</value>

</property>


<property>

<name>yarn.nodemanager.vmem-check-enabled</name>

<value>false</value>

</property>


<property>

<name>yarn.log-aggregation-enable</name>

<value>true</value>

</property>


<property>

<name>yarn.nodemanager.log-aggregation.roll-monitoring-interval-seconds</name>

<value>3600</value>

</property>


----------

설정5:

nano slaves

-----------

doop1

doop2

----------

설정6:

nano hadoop-env.sh # 변경없음


라. doop2에게 보내주고 설정하기

scp core-site.xml hdc@doop2:/usr/local/hadoop/etc/hadoop

scp mapred-site.xml hdc@doop2:/usr/local/hadoop/etc/hadoop

scp hdfs-site.xml hdc@doop2:/usr/local/hadoop/etc/hadoop

scp yarn-site.xml hdc@doop2:/usr/local/hadoop/etc/hadoop

scp slaves hdc@doop2:/usr/local/hadoop/etc/hadoop


마. 데이터 폴더 준비하기

sudo mkdir /abc

sudo chown -R hdc:hdc /abc


바. doop2 설정확인 및 조정

ssh doop2로 이동해서

설정변경 1: 

nano hdfs-site.xml 수정

두번째 property namenode 관련 제거

세번째 datanode에는 value에서 data2로 

dfs.namenode.checkpoint.period 축가 

------------

<property>

<name>dfs.replication</name>

<value>2</value>

</property>


<property>

<name>dfs.datanode.data.dir</name>

<value>/abc/data2</value>

<final>true</final>

</property>


<property>

<name>dfs.namenode.http-address</name>

<value>doop1:50070</value>

</property>


<property>

<name>dfs.namenode.secondary.http-address</name>

<value>doop2:50090</value>

</property>


<property>

<name>dfs.namenode.checkpoint.period</name>

<value>600</value>

</property>


---------------------

설정변경 2:

home에 abc 폴더 생성

sudo mkdir /abc

sudo chown -R hdc:hdc /abc


사 . 이제 모든 것에서 logout

doop1 home에서

hdfs namenode -format   ##한번만 

ls -all /abc #확인

ll /abc/name/current/

버전확인

cat /abc/name/current/VERSION 


5. 시작 및 모니터 

start-all.sh

이것을 실행시키면 start-dfs.sh, start-yarn.sh>(hadoop-daemon.sh start nn/dn/snn & yarn-daemon.sh start rm/nm)

jps #프로세스확인(5개 작동중)


ssh doop2 # doop2에서 확인

jps (4개 프로세스)

ls -all /abc/data2/current/  #data2 확인가능


hdfs -h 명령어 옵션확인

hdfs dfsadmin

hdfs dfsadmin -report


브라우저 확인 : http://doop1:50070

resourcemanager확인 : http://doop1:8088