[빅데이터 파운데이션] Hadoop3.1.3 설치 튜토리얼

원천:

https://dblab.xmu.edu.cn/blog/2441/

서문: 모든 버그를 해결하려면 재설치하세요! 사실 문제의 파생 문제는 대부분 재설치로 해결할 수 있습니다.

실험적인 콘텐츠

Hadoop 사용자 생성

먼저 ctrl+alt+t를 눌러 터미널 창을 열고 다음 명령을 입력하여 새 사용자를 만듭니다.

sudo useradd -m hadoop -s /bin/bash

그런 다음 다음 명령을 사용하여 암호를 설정합니다. 암호는 hadoop으로 간단히 설정할 수 있으며 메시지가 표시되면 암호를 두 번 입력합니다.

sudo passwd hadoop

여기에 이미지 설명 삽입
Hadoop 사용자에게 관리자 권한을 추가할 수 있습니다. 이는 배포에 편리하고 초보자에게 어려운 권한 문제를 방지합니다.

sudo adduser hadoop sudo

여기에 이미지 설명 삽입
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입
소스를 변경
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입
하고 가장 강력한(bushi) 편집기 vim을 설치합니다.

sudo apt-get install vim

여기에 이미지 설명 삽입
일반적으로 사용되는 vim 모드는 명령 모드, 삽입 모드, 시각적 모드 및 일반 모드로 나뉩니다. 이 튜토리얼에서는 일반 모드와 삽입 모드만 사용합니다. 둘 사이를 전환하면 이 가이드를 통해 도움이 될 것입니다.

일반 모드
일반 모드는 주로 텍스트 콘텐츠를 탐색하는 데 사용됩니다. 처음에는 vim이 일반 모드로 열립니다. 일반 모드로 돌아가려면 아무 모드에서나 Esc 키를 누르십시오.
삽입 편집 모드
삽입 편집 모드는 텍스트에 내용을 추가하는 데 사용됩니다. 일반 모드에서 i 키를 입력하여 삽입 편집 모드로 들어갑니다
vim 종료
vim을 사용하여 텍스트를 수정하는 경우 저장해야 합니다. 일반 모드로 돌아가려면 Esc 키를 누른 다음 wq를 입력하여 텍스트를 저장하고 vim을 종료합니다.

SSH 설치, SSH 암호 없는 로그인 구성

클러스터 및 단일 노드 모드 모두 SSH 로그인을 사용해야 합니다(원격 로그인과 유사하며 Linux 호스트에 로그인하여 명령을 실행할 수 있음). Ubuntu는 기본적으로 SSH 클라이언트를 설치했으며 SSH 서버도 설치해야 합니다.

sudo apt-get install openssh-server

여기에 이미지 설명 삽입
여기에 이미지 설명 삽입
설치 후 다음 명령을 사용하여 시스템에 로그인할 수 있습니다.

ssh localhost

이때 다음과 같은 프롬프트(처음 SSH 로그인 프롬프트)가 표시되며 yes를 입력합니다. 그런 다음 프롬프트에 따라 암호 hadoop을 입력하면 시스템에 로그인할 수 있습니다.
여기에 이미지 설명 삽입
하지만 이렇게 로그인할 때마다 비밀번호를 입력해야 하는데 비밀번호 없이 로그인할 수 있도록 SSH를 설정해야 하므로 더욱 편리합니다.

먼저 ssh를 종료하고 원래 터미널 창으로 돌아온 다음 ssh-keygen을 사용하여 키를 생성하고 인증에 키를 추가합니다.

exit                           # 退出刚才的 ssh localhost
cd ~/.ssh/                     # 若没有该目录,请先执行一次ssh localhost
ssh-keygen -t rsa              # 会有提示,都按回车就可以
cat ./id_rsa.pub >> ./authorized_keys  # 加入授权

여기에 이미지 설명 삽입
~의 의미: 리눅스 시스템에서 ~는 사용자의 홈 폴더, 즉 "/home/username" 디렉토리를 나타내며 사용자 이름이 hadoop인 경우 ~는 "/home/hadoop/"을 나타냅니다. 또한 명령에서 # 뒤의 텍스트는 주석이므로 이전 명령만 입력하면 됩니다.

이때 아래 그림과 같이 ssh localhost 명령어를 이용하여 비밀번호를 입력하지 않고 바로 로그인합니다.
여기에 이미지 설명 삽입

자바 환경 설치

Linux 명령줄 인터페이스에서 다음 Shell 명령을 실행합니다(참고: 현재 로그인 사용자 이름은 hadoop임).

cd /usr/lib
sudo mkdir jvm #创建/usr/lib/jvm目录用来存放JDK文件
cd ~ #进入hadoop用户的主目录
cd Downloads  #注意区分大小写字母,刚才已经通过FTP软件把JDK安装包jdk-8u162-linux-x64.tar.gz上传到该目录下
sudo tar -zxvf ./jdk-8u162-linux-x64.tar.gz -C /usr/lib/jvm  #把JDK文件解压到/usr/lib/jvm目录下

여기에 이미지 설명 삽입
여기에 이미지 설명 삽입
JDK 파일의 압축이 풀린 후 다음 명령을 실행하여 /usr/lib/jvm 디렉토리를 체크인할 수 있습니다.

cd /usr/lib/jvm
ls

여기에 이미지 설명 삽입
보시다시피 /usr/lib/jvm 디렉토리 아래에 jdk1.8.0_162 디렉토리가 있습니다.
그런 다음 계속해서 다음 명령을 실행하여 환경 변수를 설정합니다.

cd ~
vim ~/.bashrc

vim을 사용하여 hadoop 사용자의 환경 변수 구성 파일을 엽니다. 이 파일의 시작 부분에 다음 행을 추가하십시오.

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_162
export JRE_HOME=${
    
    JAVA_HOME}/jre
export CLASSPATH=.:${
    
    JAVA_HOME}/lib:${
    
    JRE_HOME}/lib
export PATH=${
    
    JAVA_HOME}/bin:$PATH

여기에 이미지 설명 삽입
.bashrc 파일을 저장하고 vim 편집기를 종료합니다. 그런 다음 계속해서 다음 명령을 실행하여 .bashrc 파일의 구성을 즉시 적용합니다.

source ~/.bashrc

이 때 다음 명령을 사용하여 설치 성공 여부를 확인할 수 있습니다.

java -version

여기에 이미지 설명 삽입
지금까지 Java 환경이 성공적으로 설치되었습니다. 이제 Hadoop 설치에 들어갈 수 있습니다.

Hadoop3.1.3 설치

여기서는 hadoop으로 압축을 푼 파일을 백업해 두는 것이 후속 설치에 문제가 생길 경우 쉽게 재구성할 수 있도록 하는 것이 가장 좋습니다.

sudo tar -zxf ~/下载/hadoop-3.1.3.tar.gz -C /usr/local    # 解压到/usr/local中
cd /usr/local/
sudo mv ./hadoop-3.1.3/ ./hadoop            # 将文件夹名改为hadoop
sudo chown -R hadoop ./hadoop       # 修改文件权限

압축 해제 후 Hadoop을 사용할 수 있습니다. 다음 명령을 입력하여 Hadoop 사용 가능 여부를 확인하고 성공하면 Hadoop 버전 정보가 표시됩니다.

cd /usr/local/hadoop
./bin/hadoop version

여기에 이미지 설명 삽입

Hadoop 독립형 구성(비분산)

Hadoop 기본 모드는 비분산 모드(로컬 모드)이며 추가 구성 없이 실행할 수 있습니다. 비분산, 즉 디버깅에 편리한 단일 Java 프로세스입니다.

이제 예제를 실행하여 실제 Hadoop에 대한 느낌을 얻을 수 있습니다. Hadoop은 wordcount, terasort, join, grep 등을 포함하여 풍부한 예제(모든 예제를 보려면 ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar 실행)와 함께 제공됩니다.

여기에서 grep 예제를 실행하도록 선택하고 입력 폴더의 모든 파일을 입력으로 가져오고 정규식 dfs[az.]+와 일치하는 단어를 필터링하고 발생 횟수를 세고 마지막으로 결과를 출력으로 출력합니다. 폴더.

cd /usr/local/hadoop
mkdir ./input
cp ./etc/hadoop/*.xml ./input   # 将配置文件作为输入文件
./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar grep ./input ./output 'dfs[a-z.]+'
cat ./output/*          # 查看运行结果

여기에 이미지 설명 삽입
실행에 성공하면 아래와 같이 해당 작업의 관련 정보가 출력되고 출력 결과는 정규 패턴을 따르는 dfsadmin이라는 단어입니다.하나의 다시 로드가 나타나 모든 문제를 해결합니다.Hadoop은 결과를 덮어쓰지
않습니다
여기에 이미지 설명 삽입
. 기본 파일이므로 위의 예를 다시 실행하면 Error, you need to delete ./output이 먼저 표시됩니다.

rm -r ./output

Hadoop 의사 분산 구성

Hadoop은 단일 노드에서 의사 분산 방식으로 실행될 수 있습니다. Hadoop 프로세스는 별도의 Java 프로세스로 실행됩니다. 노드는 NameNode와 DataNode의 역할을 모두 수행합니다. 동시에 HDFS에서 파일을 읽습니다.

Hadoop의 구성 파일은 /usr/local/hadoop/etc/hadoop/에 있으며 의사 분산은 두 구성 파일 core-site.xml 및 hdfs-site.xml을 수정해야 합니다. Hadoop 구성 파일은 xml 형식이며 각 구성은 속성의 이름과 값을 선언하여 구현됩니다.

core-site.xml 구성 파일을 수정합니다(gedit: gedit ./etc/hadoop/core-site.xml을 통해 편집하는 것이 더 편리함).

<configuration>
</configuration>

로 변경:

<configuration>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/usr/local/hadoop/tmp</value>
        <description>Abase for other temporary directories.</description>
    </property>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>
gedit ./etc/hadoop/core-site.xml

여기에 이미지 설명 삽입

<configuration>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/usr/local/hadoop/tmp</value>
        <description>Abase for other temporary directories.</description>
    </property>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>

여기에 이미지 설명 삽입
마찬가지로 hdfs-site.xml 구성 파일을 수정합니다.

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

여기에 이미지 설명 삽입

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/usr/local/hadoop/tmp/dfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/usr/local/hadoop/tmp/dfs/data</value>
    </property>
</configuration>

여기에 이미지 설명 삽입
Hadoop 구성 파일 설명:

Hadoop의 실행 모드는 구성 파일(Hadoop 실행 시 구성 파일을 읽음)에 의해 결정되므로 의사 분산 모드에서 비분산 모드로 전환해야 하는 경우에는 구성 항목을 삭제해야 합니다. core-site.xml.

또한 의사 분산은 fs.defaultFS 및 dfs.replication을 실행하도록 구성하기만 하면 됩니다(공식 자습서에서와 같이). hadoop.tmp.dir 매개변수가 구성되지 않은 경우 기본 임시 디렉토리는 /tmp/hadoo-입니다. hadoop, 그리고 이 디렉토리는 시스템 재시작 시 시스템에 의해 지워질 수 있으므로 포맷을 다시 실행해야 합니다. 따라서 이를 설정하고 dfs.namenode.name.dir 및 dfs.datanode.data.dir도 지정합니다. 그렇지 않으면 다음 단계에서 오류가 발생할 수 있습니다.

구성이 완료되면 NameNode의 포맷을 수행합니다.

cd /usr/local/hadoop
./bin/hdfs namenode -format

여기에 이미지 설명 삽입

여기에 이미지 설명 삽입
그런 다음 NameNode 및 DataNode 데몬을 시작합니다.

cd /usr/local/hadoop
./sbin/start-dfs.sh  #start-dfs.sh是个完整的可执行文件,中间没有空格

시작하는 동안 다음 WARN 프롬프트가 나타날 수 있습니다. WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes 여기서 적용 가능한 WARN 프롬프트는 무시할 수 있으며 정상적인 사용에 영향을 미치지 않습니다.
이 단계에서 다양한 문제가 발생할 수 있으므로 "problem" 디렉토리로 이동하십시오.
여기에 이미지 설명 삽입
시작이 완료된 후 jps 명령을 사용하여 시작 성공 여부를 판단할 수 있습니다. 시작이 성공하면 "NameNode", "DataNode" 및 "SecondaryNameNode" 프로세스가 나열됩니다(SecondaryNameNode가 아닌 경우). sbin/stop-dfs.sh를 실행하십시오. 프로세스를 닫고 시작 시도를 다시 시도하십시오). NameNode 또는 DataNode가 없으면 설정에 실패한 것이므로 이전 단계를 주의 깊게 확인하거나 시작 로그를 확인하여 원인을 해결하십시오.

성공적으로 시작되면 웹 인터페이스 http://localhost:9870을 방문하여 NameNode 및 Datanode 정보를 볼 수 있으며 온라인에서 HDFS의 파일을 볼 수도 있습니다.
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입

Hadoop 의사 분산 인스턴스 실행

위의 독립 실행형 모드에서 grep 예제는 로컬 데이터를 읽고 의사 분산은 HDFS에서 데이터를 읽습니다. HDFS를 사용하려면 먼저 HDFS에 사용자 디렉터리를 생성해야 합니다.

./bin/hdfs dfs -mkdir -p /user/hadoop

참고: 교과서 "Principles and Applications of Big Data Technology"의 명령은 "./bin/hadoop dfs"로 시작하는 쉘 명령 모드입니다. 실제로 세 가지 쉘 명령 모드가 있습니다.

  1. 하둡 fs
  2. 하둡 DFS
  3. hdfs

hadoop fs는 로컬 파일 시스템 및 HDFS 파일 시스템 과 같은 다른 파일 시스템에 적용할
수 있습니다.

그런 다음 ./etc/hadoop의 xml 파일을 분산 파일 시스템의 입력 파일로 복사합니다. 즉, /usr/local/hadoop/etc/hadoop을 분산 파일 시스템의 /user/hadoop/input에 복사합니다. 우리는 hadoop 사용자를 사용하고 있으며 해당 사용자 디렉토리 /user/hadoop을 생성했으므로 명령에서 입력과 같은 상대 경로를 사용할 수 있으며 해당 절대 경로는 /user/hadoop/input입니다.

./bin/hdfs dfs -mkdir input
./bin/hdfs dfs -put ./etc/hadoop/*.xml input

여기에 이미지 설명 삽입
복사가 완료되면 다음 명령을 사용하여 파일 목록을 볼 수 있습니다.

./bin/hdfs dfs -ls input

여기에 이미지 설명 삽입
의사 분산 모드에서 MapReduce 작업을 실행하는 방법은 독립형 모드와 동일하지만 차이점은 의사 분산은 HDFS에서 파일을 읽는다는 것입니다(독립형에서 생성된 로컬 입력 폴더 및 출력 폴더를 삭제할 수 있음). 이 시점에서 확인하는 단계).

./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar grep input output 'dfs[a-z.]+'

여기에 이미지 설명 삽입
실행 결과 보기 명령(HDFS의 출력 결과가 표시됨):

./bin/hdfs dfs -cat output/*

결과는 다음과 같습니다. 지금 구성 파일을 변경했기 때문에 실행 결과가 다릅니다.
여기에 이미지 설명 삽입
실행 결과를 로컬에서 검색할 수도 있습니다.

rm -r ./output    # 先删除本地的 output 文件夹(如果存在)
./bin/hdfs dfs -get output ./output     # 将 HDFS 上的 output 文件夹拷贝到本机
cat ./output/*

여기에 이미지 설명 삽입
Hadoop이 프로그램을 실행할 때 출력 디렉토리가 존재할 수 없습니다. 그렇지 않으면 "org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory hdfs://localhost:9000/user/hadoop/output already exists"라는 오류 메시지가 표시됩니다. 다시 실행합니다. 출력 폴더를 삭제하려면 다음 명령을 실행해야 합니다.

./bin/hdfs dfs -rm -r output    # 删除 output 文件夹

여기에 이미지 설명 삽입
Hadoop을 종료하려면 다음을 실행하십시오.

./sbin/stop-dfs.sh

여기에 이미지 설명 삽입
다음에 hadoop을 시작할 때 NameNode를 초기화할 필요가 없으며 ./sbin/start-dfs.sh를 실행하기만 하면 됩니다.

문제 및 해결책

참고: 질문 2~5는 재설치라는 단번에 해결되는 솔루션입니다.
사실 2~5번의 문제는 버그에서 오는 경우가 많은데 바꿀수록 복잡해져서 데이터를 쿼리하는 과정에서 관련 지식을 많이 배울 수 있고 이해가 깊어질 수 있다. 나오면 칼을 빼서 알렉산더처럼 복잡한 매듭을 잘랐다. 간단하고 투박하지만 효과적입니다.
기술 및 기반 기술에 대한 이해를 심화하려면 질문 2~5로 이동하십시오.

1.자바 설치 실패

여기에 이미지 설명 삽입
여기에 이미지 설명 삽입

오류: JAVA_HOME이 설정되지 않았으며 찾을 수 없습니다.

참조 문서:

https://blog.csdn.net/qq_44081582/article/details/104640421

  1. [hadoop]/etc/hadoop 디렉토리로 전환
  2. 실행: vim hadoop-env.sh
  3. java_home 경로 및 hadoop_conf_dir 경로를 특정 설치 경로로 수정합니다
    . 예:
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_162
export HADOOP_CONF_DIR=/usr/local/hadoop

여기에 이미지 설명 삽입
여기에 이미지 설명 삽입
이렇게 하면 구성이 완료됩니다.

2.ERROR: hdfs namenode에서 루트로 작업을 시도하는 중입니다.

여기에 이미지 설명 삽입
이것이 모든 악의 근원입니다.명령줄에 sudo를 추가하면 많은 권한 문제를 피할 수 있지만 이번에는 sudo를 추가하지 마십시오.
참조 문서:

https://blog.csdn.net/weixin_49736959/article/details/108897129、

vim 구성 사용:
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입

여기에 이미지 설명 삽입

3.host:9000 연결 예외 실패: java.net.ConnectException: 연결이 거부되었습니다.

문제설명 :
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입
사실 포트가 점유되어 있어서 방화벽을 열어서 9000을 8020으로 변경해서 해결했습니다.

4.localhost: 오류: 데이터 노드 프로세스 6374의 우선 순위를 설정할 수 없습니다.

문제 설명:
여기에 이미지 설명 삽입
이 문제는 정말 복잡합니다. 즉, 구성 파일을 상당히 수정했음을 의미합니다. 내가 찾은 정보는 이 문제를 잘 해결하지 못했습니다. 지금 다시 설치해도 늦지 않습니다.
최종 효과는 다음과 같습니다.

jps

여기에 이미지 설명 삽입

5.mkdir: 연결 예외에서 algernon-virtual-machine/127.0.1.1에서 localhost:9000으로 호출 실패: java.net.ConnectException: 拒绝连接;

여기에 이미지 설명 삽입
이 질문은 3번 질문과 동일하게 9000을 8020으로 수정하면 작업이 완료됩니다.
여기에 이미지 설명 삽입

성공적인 결과

Localhost는 질의할 수 있습니다.
여기에 이미지 설명 삽입
의사 분산 출력 결과:
여기에 이미지 설명 삽입
사실 이 실험은 이 두 개의 그림으로 끝납니다. 각 그림의 결과는 실험의 성공적인 결과를 나타냅니다. Linux 구성 작업의 핵심은 이전 단계가 완료되지 않으면 자연스럽게 후자 단계가 중단된다는 것입니다. 길이 열리면 거침없이 나아가고 막히면 짧게는 1~2분 길게는 1~2주.
소위 "1분 무대, 10년 무대", 전체 실험 보고서의 금 내용은 이 두 사진에 있지만 이를 위해 몇 개의 파일이 재구성되었는지, 심지어 한 번 다시 설치되었는지는 알 수 없습니다. .

경험

알렉산더 대왕은 고르디움의 수도인 프리지아의 문제를 해결했다고 합니다.
도시로 가는 길에 그는 낡은 수레를 발견했는데, 그 멍에가 매듭으로 너무 단단하게 묶여 있어서 그들이 어떻게 함께 묶여 있는지 볼 수 없었습니다. 이 매듭을 푸는 자가 아시아를 다스릴 것이라고 신탁이 말했다.
알렉산더는 거친 매듭을 잠시 살펴보더니 두 걸음 뒤로 물러서서 신탁은 매듭이 어떻게 풀리든 신경쓰지 않는다며 두 갈래로 갈라진 매듭에 칼을 뽑았다.

2번~5번 문제의 해결 방법을 잘 읽어보시면 이 문서의 해결 방법 중 일부는 모순되는 부분이 있고, 일부는 파일을 루트로 설정한 후 오류 보고 후 계속 검색을 해야 하는 경우가 있습니다. 파일을 hadoop으로 변경한 다음 다시 확인한 결과 루트 사용자를 사용하는 것이 솔루션이라는 것을 알았습니다. 다시 돌아가지 마십시오! 근데 오늘 실험수업때도 이랬는데 그뿐 아니라 인터넷에 올라온 답변들이 다 이상하고 어떤건 임시방편일뿐 근본적인 원인은 아님 블로그 보고 설정 수정하면 파일, 당신은 end.bug 파일에서만 많은 모순을 얻을 수 있습니다. 물론 하드 코어 지식도 있습니다.

사실, 컴퓨터 문제에 대한 세 가지 요령인 다시 시작, 재설치 및 재구매는 참으로 잔인하고 효과적입니다.
하지만 문제가 발생하면 다시 설치해야 합니까?
저는 항상 다음과 같이 믿었습니다. 재장전은 최후의 수단입니다.
무작정 튜토리얼만 따라하고 프로세스를 다시 실행하면 한 번 성공하면 괜찮지만 막히면 불편합니다. 이 때 재설치를 선택하고 튜토리얼을 정직하게 따라하고 경험 법칙에 따라 "너무 많은 사람들이 해왔다"면 교과서를 따라하는 데 문제가 없을 것입니다. 그러나 무엇을 배웠습니까
? 실험을 하기 위해 리눅스에서 환경을 구성하는 과정은 마치 눈을 가린 채 미로 속에서 출구를 찾아 다른 사람에게 이끌려 출구까지 걸어가는 것과 같다. 혼자서 벽에 부딪히면 경험과 방법, 교훈을 찾을 수 있습니다. 아무도 안내하지 않으면 방향을 찾는 것이 더 쉬울 것입니다.
그러니 던지기를 두려워하지 마세요. 던지기 후에 능숙해질 것입니다.
테세우스의 배처럼 시스템을 다시 설치하면 처음부터 시작해도 늦지 않을 것입니다.
그러나 백업 요구 사항이 상당히 높고 스냅샷은 항상 준비되어 있으며 소프트웨어는 백업을 기억합니다.
마찬가지로 폴더 할당, 환경 구성, 구성 파일의 경로는 항상 버그가 자주 발생하는 곳이었으며, 실험 중에 사양에 주의를 기울이면 대부분의 문제를 피할 수 있습니다.
알렉산더는 매듭을 끊을 수 있는 용기와 모든 어려움을 극복할 수 있는 끈기를 가지고 있습니다.

기원전 4세기에 활동한 마케도니아 왕. 그가 페르시아 영토인 리디아를 원정했을 때 성전에 병거가 모셔져 있었습니다. 전차는 게르디오스 왕이 성전 기둥에 묶었습니다. "이 매듭을 푸는 자가 아시아의 왕이 된다"는 현지 전설이 있는데, 이것은 많은 숙련된 도전자들이 풀지 못한 매듭입니다.

철학자: 그러면 알렉산더 대왕이 그 매듭으로 무엇을 했을 것 같습니까?

청년: 아주 교묘하게 매듭을 풀고 곧 아시아의 왕이 되었죠?

철학자: 아니오, 그렇지 않습니다. 알렉산더 대왕은 매듭이 매우 강한 것을 보고 즉시 단검을 꺼내서 둘로 잘랐습니다.

청년: 뭐? !

철학자: 전설에 따르면 그는 당시에 다음과 같이 말했습니다. " 운명은 전설이 아니라 내 검으로 결정됩니다. 나는 전설의 힘이 필요하지 않지만 운명을 창조하기 위해 내 검에 의존합니다. "

추천

출처blog.csdn.net/Algernon98/article/details/129232375