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/