2021년 9월 4일 토요일

Spark에서 자료 형태별로 읽기 및 저장하기

 조건 : HDFS Cluster와 연동이 되고 있는 상태

start-dfs.sh

start-yarn.sh

start-all.sh

1. HDFS로부터 RDD 읽고 저장하기

종합된 자료만 읽기

val myrdd = sc.textFile("hdfs:///user/spark/text/word_counts")

myrdd.collect().foreach(println)

파일 위치까지 읽기

val rddWhole = spark.sparkContext.wholeTextFiles("hdfs:///user/spark/text/word_counts")

rddWhole.collect().foreach(println)

rddWhole.take(2).foreach(println)

저장하기

myrdd.saveAsTextFile("hdfs:///user/spark/word_rdd")


2. HDFS로부터 CSV 읽고 저장하기

val csv_data = sc.textFile("hdfs:///user/spark/names.csv")

csv_data.take(5)


csv파일을 데이터프레임으로 읽기

val df = spark.read.option("header", "true").csv("hdfs:///user/spark/names.csv")

df.show()


데이터프레임으로 저장하기

df.write.option("header","true").mode("overwrite").csv("hdfs:///user/spark/df")


3. json 파일 읽어오기 및 저장

val df1 = spark.read.json("file:///home/spark/names.json")

df1.show()

df1.write.json("hdfs:///user/spark/names.json")


2021년 8월 25일 수요일

Vagrant를 이용한 Hadoop과 Spark 설치

1. 설치환경 

virtualbox 설치된 상태

2. vagrant 다운로드 및 설치 : 다운로드 25분 정도 소요

wget https://raw.githubusercontent.com/spark-in-action/first-edition/master/spark-in-action-box.json

vagrant box add --name manning/spark-in-action spark-in-action-box.json

vagrant init manning/spark-in-action

3. 환경설정 파일 수정

nano Vagrantfile

-- 두개 수정 및 활성화

  config.vm.network "private_network", ip: "192.168.10.2"

  config.vm.network "public_network"

--

4. 가상환경 시작  

vagrant up 

# 나중에 virtualbox를 전원끄기 vagrant halt, 초기화시키고 싶으면 vagrant destroy 

# 모든 자료 없애기 vagrant box remove manning/spark-in-action  

5. 터미널 연결  

ssh spark@192.168.10.2

#password spark

로그인 하면 spark@spark-in-action으로 들어옴

6. 설치환경 확인

spark-submit --version

hadoop version

java -version

7. 사용자 하둡 운용환경 설정

nano .bashrc

--

## hadoop setup

export HADOOP_HOME=/opt/hadoop-2.7.2

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

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HADOOP_HOME/lib/native

--

source .bashrc

8. 하둡 시작

start-dfs.sh

start-yarn.sh

jps

hadoop fs -ls

hadoop fs -mkdir text

touch testfile0

echo >> testfile0 '안녕 안녕 나는 열심이 열심이 공부 공부 공부 사람'

hadoop fs -put testfile0 text

9. 하둡과 스파크 연동 준비

nano /opt/spark-2.0.0-bin-hadoop2.7/conf/spark-defaults.conf

--- master 를 local[*]을 yarn으로 변경

nano /opt/spark-2.0.0-bin-hadoop2.7/conf/spark-env.sh

---추가

export HADOOP_CONF_DIR=/opt/hadoop-2.7.2/etc/hadoop

---

# hdfs://localhost:9000/user/spark/text/test.txt파일의 경우 

---


10. 하둡과 스파크 연동

spark 클러스터 구동

$ start-master.sh

$ start-slaves.sh

$ jps  : 총 8개 프로세스 확인

---

3328 DataNode

3153 NameNode

4418 Worker

4467 Jps

3700 ResourceManager

3546 SecondaryNameNode

3853 NodeManager

4286 Master

---
이로서 스파크와 하둡 클러스터 연동 완료


11. 스파크에서 하둡파일 불러서 word count 하기

참고로 아래와 같이

### spark-shell scala wordcount

sc.textFile('text/test.txt').flatMap(_.split('\\W+')).map(w =>(w,1)).reduceByKey((a,b) =>(a+b)).foreach(println)

$ spark-shell 실행

--- 이후 scala 코드

var linesRDD = sc.textFile("hdfs://localhost:9000/user/spark/text/testfile0")

var wordsRDD = linesRDD.flatMap(_.split(" "))

var wordsKvRdd = wordsRDD.map((_, 1))

var wordCounts = wordsKvRdd.reduceByKey(_ + _ )

wordCounts.first

wordCounts.take(5)

# HDFS에 저장

wordCounts.saveAsTextFile("hdfs://localhost:9000/user/spark/text/word_counts")

### 


12. spark-sumit를 이용한 작업

spark-submit --master local /opt/spark-2.0.0-bin-hadoop2.7/examples/src/main/python/pi.py



2021년 6월 29일 화요일

hadoop standalone 환경설정

master


 1. core-site.xml

<configuration>

    <property>

        <name>fs.defaultFS</name>

        <value>hdfs://master:9000</value>

    </property>

</configuration>


2. 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>1</value>

    </property>

</configuration>


3. yarn-site.xml

<configuration>

    <property>

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

            <value>master</value>

    </property>

    <property>

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

            <value>mapreduce_shuffle</value>

    </property>

</configuration>


4. mapred-site.xml

configuration>

    <property>

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

            <value>yarn</value>

    </property>

</configuration>


5. workers

master

2021년 6월 26일 토요일

hadoop-3.3.1 standalone mode 설치하기

 1. 사용자 hadoop 생성

sudo 사용자 계정에서

$ sudo visudo

root 밑에 똑같은 권한 추가

 hadoop ALL=(ALL:ALL) ALL

저장

sudo adduser hadoop

su - hadoop


2. ssh 및 openssh-server 설치

sudo apt update

sudo apt install ssh

ssh localhost

sudo apt install openssh-server


3. java 설치

sudo apt install openjdk-8-jdk

java -version #확인결과 아래와 같이

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

openjdk version "1.8.0_292"

OpenJDK Runtime Environment (build 1.8.0_292-8u292-b10-0ubuntu1~20.04-b10)

OpenJDK 64-Bit Server VM (build 25.292-b10, mixed mode)

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

4. hadoop 다운로드
참조 : https://hadoop.apache.org/releases.html
바이너리 다운로드 사이트 참조
wget https://mirror.navercorp.com/apache/hadoop/common/hadoop-3.3.1/hadoop-3.3.1.tar.gz
tar xvzf hadoop-3.3.1.tar.gz

5. standalone mode 설치 
sudo apt install maven
sudo apt install git
git clone https://github.com/PacktPublishing/Apache-Hadoop-3-Quick-Start-Guide/ src/
mvn


2021년 6월 14일 월요일

Hive 3.1.2 운용 연습

 대부분 MySQL 명령어와 유사

1. 파일로 입력하기 

hdfs dfs -put names.txt text


> show databases;

> create database testdb;

> use testdb;

> CREATE EXTERNAL TABLE IF NOT EXISTS names(

EmployeeID INT, FirstName STRING, Title STRING, State STRING, Laptop STRING)

COMMENT 'Employee Names'

ROW FORMAT DELIMITED

FIELDS TERMINATED BY ','

STORED AS TEXTFILE

location '/user/bjyoo/text';

>select * from names;

지우기 

>drop table names;

>drop database testdb;

>exit;

2021년 6월 12일 토요일

Sqoop 1.4.7 설치

1. 다운로드

wget http://mirrors.estointernet.in/apache/sqoop/1.4.7/sqoop-1.4.7.tar.gz


tar -xvf sqoop-1.4.7.tar.gz

mv sqoop-1.4.7/ sqoop


2. bashrc 설정

export SQOOP_HOME=/home/stat/sqoop

export PATH=$PATH:$SQOOP_HOME/bin


3. sqoop-env.sh 환경설정

cd $SQOOP_HOME/conf

mv sqoop-env-template.sh sqoop-env.sh

nano sqoop-env.sh

hadoop 홈 path 설정 입력

-------

export HADOOP_COMMON_HOME=/home/stat/hadoop

export HADOOP_MAPRED_HOME=/home/stat/hadoop

-------

4. mysql connector 설치

wget http://www.mirrorservice.org/sites/ftp.mysql.com/Downloads/Connector-J/mysql-connector-java-8.0.25.tar.gz

tar -xvf mysql-connector-java-8.0.25.tar.gz

mv mysql-connector-java-8.0.15/mysql-connector-java-8.0.25.jar /$SQOOP_HOME/lib


5. 실행

sqoop -version

 

우분투에 스파크 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

2021년 4월 24일 토요일

우분투에 한글 latex 설치 방법

 ktug에서 제시하는 방법으로 사용해왔었는데 그냥 우분투에서 제공하는 texlive 라이비브러리로도 가능한 것을 확인하였다.

다만 용량을 많이 차지할 뿐이다.

가. 설치하기

$ sudo apt-get update

$ sudo apt-get install texlive-full

# 만약 라이브러리 설치안되면 아래 repository 추가후 설치

 $ sudo add-apt-repository ppa:texlive-backports/ppa

나. 확인 

$ nano a.tex

----- 아래 입력 및 저장

documentclass{article}

\usepackage{kotex}

\usepackage{lmodern}

\title{한글 test}

\begin{document}

\maketitle

한글 문서 작성을 해보자.

\end{document}

---------------- 저장 후

$ pdflatex a.tex

하면 폴더에 a.pdf 파일 컴파일 된 것 확인 가능 

다. 에디터 texstudio 설치

$ sudo apt-get install texstudio

$ texstudio   

위에있는 파일 불러들여서 화살표두개로 실행 시 결과 확인 가능 

2021년 4월 19일 월요일

우분투 18.04에서 python 3.6에서 3.7로 업그레이드 방법

sudo apt update

sudo apt-get install python3.7


ls -lh /usr/bin/python* # 으로 현재 설정 확인

sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 1

sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.7 2

sudo update-alternatives --config python3  #2입력

sudo rm /usr/bin/python3

sudo ln -s python3.7 /usr/bin/python3

python3 -V


## ls -lh /usr/bin/python* 으로 확하여 불필요한 것 지우기

## CommandNotFound.db.creator import DbCreator 에러 발생시 

sudo apt-get remove --purge python3-apt

sudo apt autoremove 

sudo apt-get install python3-apt

2021년 3월 30일 화요일

우분투 mysql 한글 입력 문제

 특별한 설정변경 없이 mysql에 한글 입력을 시도하면 에러가 나는 경우가 있다.

mysql > status를 해보면 아래와 같이 latin1 이 default 값으로 설정된 경우이다.

Server characterset:    latin1

Db     characterset:    latin1

Client characterset:    utf8

Conn.  characterset:    utf8


이를 바로잡아 주는 방법은 

$ sudo nano /etc/mysql/my.cnf  설정파일을 열고  아래의 내용을 밑에 추가해준다.

-----

[client] 

default-character-set = utf8 

[mysqld] 

character-set-client-handshake=FALSE 

init_connect="SET collation_connection = utf8_general_ci" 

init_connect="SET NAMES utf8" 

character-set-server = utf8 

collation-server = utf8_general_ci 

[mysqldump] 

default-character-set = utf8 

[mysql] 

default-character-set = utf8

-----

설정변경후 mysql 재시작

$ sudo service mysql restart

이후 mysql에 들어가서 status 확인하면 모두가 utf8로 변경된 것을 확인

2021년 3월 8일 월요일

우분투 서버에 주피터 노트북 서버 설치(Jupyter notebook server on Ubuntu 18.04 server)

 1. 최신화

sudo apt update

sudo apt -y upgrade


2. 파이썬 설치

sudo add-apt-repository ppa:deadsnakes/ppa

sudo apt install python3

python3 -V


3. 지원도구 설치

sudo apt install -y python3-pip

# 라이브러리 추가설치시 pip3 install numpy 와 같이 라이브러리명을 입력 설치

sudo apt install build-essential libssl-dev libffi-dev python3-dev


4.주피터노트북 설치 및 사용할 패스워드 생성

pip3 install jupyter

python3 

# ipython 커맨드라인에서 

>>>from notebook.auth import passwd

>>>passwd() # 자신이 사용할 패스워드 두번 입력 후 출력된 것 복사

Out[2]: 'sha1:f24baff49ac5:863dd2ae747212ede58125302d227f0ca7b12bb3'


5.주피터 노트북 설정

jupyter notebook --generate-config

sudo nano ~/.jupyter/jupyter_notebook_config.py

# 디폴트설치 y

sudo nano (위에서 디폴트설치한 파일 주소) # 설정파일 편집

가장 간단하게 아래 두개만 찾아서 편집(찾기 어렵기때문에 Ctrl+W로 찾아가기

c.NotebookApp.ip = '자기 서버 ip'

c.NotebookApp.password = 'sha1:f24baff49ac5:863dd2ae747212ede58125302d227f0ca7b12bb3'

#위 4번에서 카피해둔 것 붙여넣기, 설정파일 저장 후 터미널 복귀


6.방화벽 개방 및 백그라운드 실행

방화벽에서 port 8888 개방

# ufw 방화벽 사용한다면 sudo ufw allow 8888

백그라운드 실행 및 프로세스 정지

$ nohup jupyter-notebook &

#입력후 Ctrl+c로 복귀 후 자기서버 주소:8888으로 접속

#서버 재부팅시는 위의 명령을 다시 실행 해줘야 브라우저로 접속 가능

#프로세스 강제종료 아래와 같이 실행

ps -ef | grep python  #프로세스 확인

kill -9  10000


2021년 2월 2일 화요일

우분투 Ubuntu 18.04 L2TP 및 IPsec 방식의 VPN 서버와 클라이언트 설정

1. 서버 설정 

$ wget https://git.io/vpnsetup -O vpnsetup.sh

$ nano -w vpnsetup.sh 아래내용 입력

==

IPsec PSK: '사전공유키 자기가 사용하고자 하는 것 20자리 이상 입력'

Username: '아이디'

Password: '패스워드'

====

$ sudo sh vpnsetup.sh

설치 후 출력물 복사 (IP 주소를 포함 위에 입력 내용 복사하여 클라이언트 설정시 사용)

포트 개방 : UDP 500과 4500 

나중에 재시작 

$ service ipsec restart

$ service xl2tpd restart


2. 클라이언트 설정 

$ sudo apt-get update

$ sudo apt-get install network-manager-l2tp 

$ sudo apt-get install network-manager-l2tp-gnome

우상단 GUI 설정을 이용하여 vpn 설정

===

설정 - 네트워크 - vpn 오르쪽 + - L2TP vpn 추가  

IPsec 설정 1.서버ID, 2. Pre-shared key 복사해놓은것 입력로

3 phase1알고리즘 3des-sha1-modp1024 4. phase2알고리즘 3des-sha1

PPP설정 인증방법허용에서 MSCHAPv2만 체크, 나머지 설정은 디폴트 그대

===

접속시 우상단 네트워크에서 가상사설망 켬으로 이동 연결

2021년 1월 7일 목요일

구글의 Blogger 블로그 내용을 백업하여 Wordpress 블로그에 업로드 하기

 1. 구글블로그 Blogger Blog에서 자료 내보내기

로그인하고 설정 -> 블로그관리의 콘텐츠 백업 -> 다운로드 선택

다운로드 폴더에 xml 형태로 다운로드 됩니다.


2. 워드프레스 Blog에 올리기 

로그인 -> 도구의 가져오기 -> 가져오기 툴 Blogger 설치 

Run Importer-파일업로드 후 가져오기 - import하는 사람 선택


*반대의 경우도 가능하네요.

워드프레스에서 내보내기하여 파일을 xml형태로 다운로드 받고

구글블로그의 Blogger에서 설정-콘텐츠 가져오기하면 됩니다.


서로 호환되니까 좋네요

2021년 1월 6일 수요일

우분투 Ubuntu 18.04 아나콘다 Anaconda 설치 및 주요 명령어 사용방법

 1. Anaconda 최신버전 확인

https://www.anaconda.com/distribution/


2. Anaconda Bash Script 다운로드

$ wget https://repo.anaconda.com/archive/Anaconda3-2019.10-Linux-x86_64.sh


3. Data Integrity of the Installer 확인

$ sha256sum Anaconda3-2019.10-Linux-x86_64.sh

인증코드 출력


4. 설치

$ bash Anaconda3-2019.10-Linux-x86_64.sh

라이센스 동의, 설치폴더 등 확인

$ source ~/.bashrc

설치 activation


5. 설치 확인

$ conda list

패키지들의 버전 확인


6. 환경구성 

conda create -n myenv python=3.5

conda install -n myenv tensorflow=1.0.0 keras matplotlib 

conda list -n myenv


conda activate myenv

conda deactivate


yml파일을 이용한 환경 구성

environment.yml 파일은 아래와 같이 구성

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

name: handson-ml

dependencies:

  - python=3.6

  - scikit-learn

  - matplotlib

  - jupyter

  - pandas

  - pillow

  - nltk

  - pip:

    - tensorflow

    - gym

    - graphviz

    - watermark

    - urlextract

    - xgboost

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

conda env create -f environment.yml

conda info --envs

conda activate handson-ml

conda deactivate


7. conda env 이름 변경

conda create -name new_name --clone old_name

conda remove -name old_name --all


8.백그라운드 실행 및 프로세스 정지

nuhup jupyter-notebook &

kill -9  10000

ps -ef | grep python  #프로세스 확인


9.jupyternotebook에 환경구성 나타나도록 하는 방법

아래의 세가지 방법이 있으나 가장 잘되는 것은 1번 방법이다.


9-1. 환경을 activating 시킨 후 jupyter notebook를 실행

conda activate handson-ml

conda install jupyter

jupyter notebook

conda deactivate


9-2. 환경을 activating 시킨 후 specital kernel 생성

conda activate handson-ml

conda install ipykernel

ipython kernel install --user --name=handson-ml

jupyter notebook


9-3. nb_conda_kernels을 이용하는 방법

conda activate handson-ml

conda install ipykernel

conda deactivate

conda activate base

conda install nb_conda_kernels

jupyter notebook

2021년 1월 3일 일요일

우분투 Ubuntu LAMP server 20.04로 전환 + owncloud server + wordpress-5.3.6 블로그 + R 4.0 + Rstudio server1.3

 1. root 계정 암호 설정

$ sudo passwd 실행해서 root unix 암호 등 설정

관리자 계정 추가 sudo adduser admin

추가 확인 ls /home

$ sudo usermod -a -G sudo admin *sudo 권한 부여

2. apache2 설치

sudo apt update

sudo apt install apache2

sudo ufw enable

sudo ufw app list

sudo ufw allow 20-22

sudo ufw allow in "Apache"

sudo ufw status

3. MySQL 설치 8.0 

패스워드 길이 조합 각별히 통제

sudo apt install mysql-server

sudo mysql_secure_installation

root 패스입력후 그냥 모두 엔터 쳐도 무난, 

sudo 만 로그인 가능하고 별도 패스설정 불필요 


4. php 설치 7.2버전으로 

sudo apt install php libapache2-mod-php php-mysql

php -v


5.owncloud 서버 설치

wget https://download.owncloud.org/community/owncloud-10.0.6.tar.bz2

tar -xvf owncloud-owncloud-10.0.6.tar.bz2

sudo mv owncloud /var/www/

sudo chown -R www-data:www-data /var/www/owncloud/

sudo chmod -R 755 /var/www/owncloud/

-Mysql DB 생성 및 설정

$ sudo mysql

mysql> create user 'yourid'@'localhost' identified by '자기 비번';

mysql> create database owncloud;

mysql>GRANT ALL on owncloud.* to 'yourid'@'localhost';

mysql> flush privileges;

mysql>exit;

-http가 가능하기 위해서는 php7.2보다 높은 버전은 안됨(TLS 인증서 필요)

sudo apt install apache2 libapache2-mod-php7.2 openssl php-imagick php7.2-common php7.2-curl php7.2-gd php7.2-imap php7.2-intl php7.2-json php7.2-ldap php7.2-mbstring php7.2-mysql php7.2-pgsql php-smbclient php-ssh2 php7.2-sqlite3 php7.2-xml php7.2-zip

sudo dpkg -l apache2

sudo systemctl start apache2


-Configure Apache for OwnCloud

sudo nano /etc/apache2/conf-available/owncloud.conf

-------아래 입력

Alias /owncloud "/var/www/owncloud/"

<Directory /var/www/owncloud/>

  Options +FollowSymlinks

  AllowOverride All

 <IfModule mod_dav.c>

  Dav off

 </IfModule>

 SetEnv HOME /var/www/owncloud

 SetEnv HTTP_HOME /var/www/owncloud

</Directory>

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


sudo a2enconf owncloud

sudo a2enmod rewrite

sudo a2enmod headers

sudo a2enmod env

sudo a2enmod dir

sudo a2enmod mime


sudo systemctl restart apache2

sudo ufw allow mysql

-웹서버로 접속

http://ip/owncloud

로그인 아이디와 패스는 아무거나 새로운 관리자로 사용하고 싶은 것을 입력하고

DB와 연동되는 부분은 위에 승인 받아놓은 사용자/db 선택, localhost:3306

특히 Connect Error: SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client

문제는 mysql을 아래와 같이 조치하면 된다.

ALTER USER 'geoyourid'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password 길게';

sudo nano /var/www/owncloud/config/config.php


- 내 pc 클라이언트 설치

wget -nv https://download.owncloud.com/desktop/ownCloud/stable/latest/linux/Ubuntu_20.10/Release.key -O - | sudo apt-key add -

echo 'deb https://download.owncloud.com/desktop/ownCloud/stable/latest/linux/Ubuntu_20.10/ /' | sudo tee -a /etc/apt/sources.list.d/owncloud.list

sudo apt update

sudo apt owncloud-client


6.워드프레스 설치

wget https://ko.wordpress.org/wordpress-5.3.6-ko_KR.zip

unzip wordpress-5.3.6-ko_KR.zip

sudo cp -rp wordpress /var/www/html/blog/

sudo chown -R www-data:www-data /var/www/html/blog

sudo chmod -R 755 var/www/html/blog

sudo apt install ftp vsftpd

sudo nano /etc/vsftpd.conf 의 주석해제

local_enable=Yes

write_enable=YES

lacal_umask=022

sudo service vsftpd restart


홈페이지 접속 

http://45.76.XXX.000/blog

mysql 연결 설정 화면에 나온것을 아래 파일에 저장, db 사용자 설정 등

sudo nano /var/www/html/blog/wp-config.php


7.R 서버와 Rstudio 설치

우분투 앱 소스추가

sudo apt install dirmngr gnupg apt-transport-https ca-certificates software-properties-common

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9

sudo add-apt-repository 'deb https://cloud.r-project.org/bin/linux/ubuntu focal-cran40/'

sudo apt install r-base

R --version

-Rstudio server 설치

sudo apt-get install gdebi-core

#참조:https://rstudio.com/products/rstudio/

wget https://download2.rstudio.org/server/bionic/amd64/rstudio-server-1.3.1093-amd64.deb

sudo gdebi rstudio-server-1.3.1093-amd64.deb

sudo ufw allow 8787

-working diretory 설정

터미널에서 mkdir rstudio

상단메뉴를 이용하여 Session > Set Working Directory > Choose Directory.

2021년 1월 1일 금요일

df -h 용량확인시 /dev/loop 디바이스 나오지 않도록 설정하는 법

 용량확인하려고 우분투 터미널에서 df -h를 입력하면 

실행중인 /dev/loop 들 즉 loop device들이 줄줄이 나와 정작 확인하고자하는 하드들의 용량확인이 혼란스러운 경우가 있다. 그래서 이런 것들을 없애주는 방법

echo "alias df='df -h -x squashfs -x tmpfs -x devtmpfs'" >> ~/.bash_aliases

source ~/.bash_aliases

df -h