溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Hadoop 安裝部署實踐

發(fā)布時間:2020-08-02 12:37:20 來源:網絡 閱讀:752 作者:水牛sandy 欄目:大數據

環(huán)境準備#

支持平臺#

GNU/Linux是產品開發(fā)和運行的平臺。 Hadoop已在有4000個節(jié)點的GNU/Linux主機組成的集群系統上得到驗證。
Win32平臺是作為開發(fā)平臺支持的。由于分布式操作尚未在Win32平臺上充分測試,所以還不作為一個生產平臺被支持。

所需軟件#

Linux和Windows所需軟件包括:

JavaTM1.5.x,必須安裝,建議選擇Sun公司發(fā)行的Java版本。
ssh 必須安裝并且保證 sshd一直運行,以便用Hadoop 腳本管理遠端Hadoop守護進程。
Windows下的附加軟件需求
Cygwin - 提供上述軟件之外的shell支持。

安裝步驟#

本文以Ubuntu為測試環(huán)境,鑒于配置測試環(huán)境,不做復雜用戶拆分,先部署到當前用戶下。

安裝軟件
如果你的集群尚未安裝所需軟件,你得首先安裝它們。

更新apt-get源配置#

$sudo apt-get update

安裝java環(huán)境#

本文環(huán)境使用jdk1.7

兩種方式使用openjdk,直接用apt-get安裝

$sudo apt-get install -y openjdk-7-jdk$export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64

或者通過oracle 官網下載jdk,然后解壓安裝
http://www.oracle.com/technetwork/java/javase/archive-139210.html
然后設置JAVA_HOME
本文環(huán)境 JAVA_HOME=/usr/local/jdk

lrwxrwxrwx  1 root  root    22 Jun 22 10:20 jdk -> /usr/local/jdk1.7.0_80/drwxr-xr-x  8 uucp    143 4096 Apr 11  2015 jdk1.7.0_80/

環(huán)境變量可以配置到 .bash_profile

配置SSH環(huán)境#

安裝ssh服務及客戶端

$sudo apt-get install -y openssh-server

啟動SSH服務

$sudo service ssh start

配置免登陸

$ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ''$cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys$chmod 600 ~/.ssh/authorized_keys

免登陸測試

$ssh localhost

The authenticity of host 'localhost (::1)' can't be established.ECDSA key fingerprint is SHA256:8PGiorJvZpfFOJkMax6qVaSG8KyRRNnVJGjhNqVqh/k.Are you sure you want to continue connecting (yes/no)?yes$exit

安裝Hadoop#

$cd /usr/local$sudo wget http://apache.fayea.com/hadoop/common/hadoop-2.6.4/hadoop-2.6.4.tar.gz$sudo tar xzvf hadoop-2.6.4.tar.gz$sudo ln -s hadoop-2.6.4.tar.gz hadoop#修改目錄權限,改成當前用戶的所屬$sudo chown -R XXXXX  hadoop*

配置#

配置偽分布式:
修改etc/hadoop/core-site.xml

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property></configuration>

etc/hadoop/hdfs-site.xml

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property></configuration>

啟動hadoop#

  $ bin/hdfs namenode -format
  $ sbin/start-dfs.sh  #查看進程
  $jps429 SecondaryNameNode172 NameNode1523 Jps286 DataNode

Namenode web地址: http://localhost:50070/

可以執(zhí)行命令測試一下

# create input files$ mkdir input
$ echo "Hello Docker" >input/file2.txt
$ echo "Hello Hadoop" >input/file1.txt# create input directory on HDFS$ hadoop fs -mkdir -p input# put input files to HDFS$ hdfs dfs -put ./input/* input# run wordcount$ hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.4.jar wordcount input output# print the input files$ echo -e "\ninput file1.txt:"$ hdfs dfs -cat input/file1.txt

$ echo -e "\ninput file2.txt:"$ hdfs dfs -cat input/file2.txt# print the output of wordcount$ echo -e "\nwordcount output:"$ hdfs dfs -cat output/part-r-00000

debug調試時候會出現下面信息:
WARN io.ReadaheadPool: Failed readahead on ifile
EBADF: Bad file descriptor

查閱信息后,說由于在快速讀取文件的時候,文件被關閉引起,也可能是其他bug導致,此處忽略。
也可以 mapreduce.ifile.readahead=false 臨時禁掉 

hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.4.jar wordcount -D mapreduce.ifile.readahead=false input output

當前MR為local模式運行,如果想通過YARN運行則需要配置啟動YARN服務

單節(jié)點YARN#

修改etc/hadoop/mapred-site.xml

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property></configuration>

etc/hadoop/yarn-site.xml

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property></configuration>

啟動服務

 $ sbin/start-yarn.sh

可以重新運行上步驟實例

可以查看 RM web地址: http://localhost:8088/

docker配置測試環(huán)境#

前提已經具有docker環(huán)境

將下載
jdk-7u80-linux-x64.tar.gz 放到jdk文件夾
hadoop-2.6.4.tar.gz 壓縮包放到 dist文件夾

目錄結構:

./├── Dockerfile
├── dist
│   └── hadoop-2.6.4.tar.gz
└── jdk
    └── jdk-7u80-linux-x64.tar.gz

DockerFile hainiubl/hadoop-node:apache:

FROM ubuntu:latestMAINTAINER sandy <sandy@hainiubl.com>#install softwareRUN apt-get updateRUN apt-get install -y ssh vim openssh-serverADD jdk/jdk-7u80-linux-x64.tar.gz /usr/localRUN ln -s /usr/local/jdk1.7.0_80 /usr/local/jdk && rm -rf /usr/local/jdk-7u80-linux-x64.tar.gz# install hadoopADD dist/hadoop-2.6.4.tar.gz /usr/local/RUN ln -s /usr/local/hadoop-2.6.4 /usr/local/hadoopENV JAVA_HOME=/usr/local/jdkENV HADOOP_HOME=/usr/local/hadoopENV HADOOP_MAPRED_HOME=$HADOOP_HOMEENV HADOOP_COMMON_HOME=$HADOOP_HOMEENV HADOOP_HDFS_HOME=$HADOOP_HOMEENV HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoopENV YARN_HOME=$HADOOP_HOMEENV YARN_CONF_DIR=$HADOOP_HOME/etc/hadoopENV PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin# ssh without keyRUN ssh-keygen -t rsa -f ~/.ssh/id_rsa -P '' && \
    cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

build:

$ docker build -t hainiubl/hadoop-node:apache ./

目錄結構:

./├── Dockerfile
├── config
│   ├── core-site.xml
│   ├── hadoop-env.sh
│   ├── hdfs-site.xml
│   ├── mapred-site.xml
│   ├── run-wordcount.sh
│   └── yarn-site.xml

DockerFile hainiubl/hadoop-pseudo

ROM hainiubl/hadoop-node:apacheMAINTAINER sandy <sandy@hainiubl.com>ADD config/* /root/RUN mv /root/core-site.xml $HADOOP_HOME/etc/hadoop/ && mv /root/hadoop-env.sh $HADOOP_HOME/etc/hadoop/RUN chmod +x ~/run-wordcount.sh && \
    chmod +x $HADOOP_HOME/sbin/start-dfs.sh && \
    chmod +x $HADOOP_HOME/sbin/start-yarn.shCMD [ "sh", "-c", "/etc/init.d/ssh start; bash"]

build:

$ docker build -t hainiubl/hadoop-pseudo:apache ./

啟動docker節(jié)點:

$ docker run -itd -p 50070:50070 -p 8088:8088 --name hadoop-pseudo hainiubl/hadoop-pseudo:apache &$ docker exec -it hadoop-pseudo sh -c "/usr/local/hadoop/bin/hdfs namenode -format && /usr/local/hadoop/sbin/start-dfs.sh && bash"



向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI