九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
使用 Docker 搭建本地 Hadoop 集群

終于開始學(xué)習(xí) hadoop 了,雖然是學(xué)校開課了才開始跟著學(xué)校的課程學(xué),至少也是開始了。

首先要做的就是搭建好一個 hadoop 的環(huán)境,需要三臺主機,配置一個 master 兩個 slave 的架構(gòu)。

老師讓我們用 vbox 來做,但是個人覺得虛擬機太慢了,而且還要開三個,太虧。剛好最近開始接觸 docker ,準備就在 docker 的環(huán)境下搭建 hadoop 環(huán)境。

安裝docker

可以考慮使用國內(nèi)的加速鏡像 daocloud.io 注冊后可以看到如何使用

由于我已經(jīng)通過官網(wǎng)的方法安裝了,這里就只記錄下我的操作:

curl -fsSL https://get.docker.com/ | sh

這個過程會很漫長,誰讓我作死去官網(wǎng)下呢 (-_-)

腳本執(zhí)行完后就能發(fā)現(xiàn) docker 已經(jīng)安裝好了,而且還添加了一個用戶組 docker,可以把自己常用的用戶加入到這個組,方便使用。

可以使用 docker version 查看一下版本

$ docker versionClient: Version:      1.11.1 API version:  1.23 Go version:   go1.5.4 Git commit:   5604cbe Built:        Tue Apr 26 23:43:49 2016 OS/Arch:      linux/amd64Server: Version:      1.11.1 API version:  1.23 Go version:   go1.5.4 Git commit:   5604cbe Built:        Tue Apr 26 23:43:49 2016 OS/Arch:      linux/amd64

拉取鏡像

docker 和 git 的命令有些相像,可以使用 pull 命令拉取遠程倉庫,不過 git拉取的往往是代碼,而 docker 拉取的是鏡像

從 daocloud 拉取鏡像

docker pull daocloud.io/library/centos:centos7

daocloud.io/library/centos 表示鏡像的名字

centos7 表示鏡像的版本,默認是 latest ,表示最新版

啟動鏡像

我們可以使用 docker images 命令查看本地鏡像列表,選擇啟動哪一個鏡像

$ docker imagesREPOSITORY                                   TAG                 IMAGE ID            CREATED             SIZEdaocloud.io/library/centos                   centos7             96eecaf1019a        6 days ago          196.7 MBdaocloud.io/library/centos                   latest              96eecaf1019a        6 days ago          196.7 MB44mfwmrx.mirror.aliyuncs.com/library/redis   latest              ad6e7427198c        2 weeks ago         184.9 MBdaocloud.io/library/ubuntu                   latest              c5f1cf30c96b        2 weeks ago         120.8 MBhello-world                                  latest              94df4f0ce8a4        3 weeks ago         967 Bdaocloud.io/library/ubuntu                   trusty-20160424     8fa7f61732d6        4 weeks ago         188 MBdaocloud.io/daocloud/daocloud-toolset        latest              1ab33797d8a1        4 weeks ago         150.2 MB$ docker run -h master --dns=61.139.2.69 -it daocloud.io/library/centos:centos7

這個命令啟動一個容器,參數(shù)解釋如下

參數(shù)名參數(shù)值參數(shù)含義
-hmaster指定 hostname
--dns61.139.2.69指定 DNS ,默認的是 8.8.8.8 ,國內(nèi)環(huán)境...
-it 以交互模式啟動

具體的含義可以使用 docker run --help 查看,這里就不贅述了。

安裝需要的軟件

安裝 wget 等

$ sudo yum install -y wget vim openssh-server openssh-clients net-tools

拉取到本地的鏡像是盡可能小的,所以很多命令都沒有安裝:

  • openssh-server : 安裝 sshd 服務(wù)
  • openssh-clients : 安裝 ssh 命令
  • net-tools : 安裝 netstat , ifconfig 等命令

但是安裝完后并不會啟動 sshd 服務(wù),容器是被 docker 管理的,無法使用一些系統(tǒng)命令,要啟動 sshd 需要執(zhí)行如下命令

/usr/sbin/sshd -D &

后臺啟動 sshd 服務(wù),之后就可以使用 ssh 命令登錄容器了。

因為 ssh 是 hadoop 必需的服務(wù),所以我們要在容器啟動是就開啟,所以把這條命令寫到一個腳本里

$ vim /root/run.sh$ chmod 750 /root/run.sh$ cat /root/run.sh!/bin/bash/usr/sbin/sshd -D

這里不讓其后臺運行是為了保證容器不退出,只要容器在后臺運行,我們就可以在宿主機上連接容器。

網(wǎng)絡(luò)配置

本來是要開始下載 jdk 的,但是發(fā)現(xiàn)不能上網(wǎng),測試了一下發(fā)現(xiàn)是 dns 的問題。

不怕折騰的我怎么能夠忍受每啟動一個容器都要帶上 --dns 參數(shù)呢,一定可以改的。

結(jié)果是折騰了半天(真的是半天?。业搅讼旅娴慕鉀Q方案。

修改默認 dns

  • 修改 /etc/default/docker
...DOCKER_NETWORK_OPTIONS="--dns=61.139.2.69"...
  • 修改 /lib/systemd/system/docker.service
...[Service]EnviornmentFile=-/etc/default/dockerExecStart=/usr/bin/docker daemon -H fd:// $OPTIONS \          $DOCKER_NETWORK_OPTIONS...

這里的設(shè)置是按照官網(wǎng)的說明來配置的,百度到的東西都不能使參數(shù)生效,不知道為什么

官網(wǎng)文檔 : http://docs.master.dockerproject.org/engine/admin/systemd/

然后重啟 docker

systemctl daemon-reloadsystemctl restart docker.service#使用這個命令可以查看 docker 的啟動命令是否生效$ ps -ef | grep dockerroot     ***     1  0 525 ?       00:02:23 /usr/bin/docker daemon -H fd:// --dns=61.139.2.69 --registry-mirror=***

安裝JDK8

wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u91-b14/jdk-8u91-linux-x64.tar.gzsudo mkdir /usr/javasudo tar zxf jdk-8u91-linux-x64.tar.gz -C /usr/javasudo echo "export JAVA_HOME=/usr/java/jdk1.8.0_91" >> /etc/bashrcsudo "export PATH=$PATH:$JAVA_HOME/bin" >> /etc/bashrcsudo echo "export CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar" >> /etc/bashrcsource /etc/bashrc

安裝Hadoop

下載與環(huán)境變量

wget http://mirrors.cnnic.cn/apache/hadoop/common/hadoop-2.7.2/hadoop-2.7.2.tar.gzsudo mkdir /usr/local/hadoopsudo tar zxf hadoop-2.7.2.tar.gz -C /usr/local/hadoopsudo echo "export HADOOP_HOME=/usr/local/hadoop/hadoop-2.7.2" >> /etc/bashrcsudo echo "export HADOOP_CONFIG_HOME=$HADOOP_HOME/etc/hadoop" >> /etc/bashrcsudo echo "export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin" >> /etc/bashrcsource /etc/bashrc

配置

對于 hadoop ,我還是個初學(xué)者,下面的配置是在網(wǎng)上借鑒的別人的文章

  • 首先在 HADOOP_HOME 目錄下創(chuàng)建如下目錄

    • tmp :臨時目錄
    • namenode :NameNode 存放目錄
    • datanode :DataNode 存放目錄
  • 切換到 HADOOP_CONFIG_HOME 目錄

cp mapred-site.xml.template mapred-site.xml
  • 配置 core-site.xml
<configuration>  <property>    <name>hadoop.tmp.dir</name>    <value>/usr/local/hadoop/hadoop-2.7.2/tmp</value>    <description>A base for other temporary dirctories.</description>  </property>  <property>    <name>fs.default.name</name>    <value>hdfs://master:9000</value>    <final>true</final>    <description>The name of the default file system.    A URI whose scheme and authority determine the FileSystem implemntation.    The uri's scheme determines the config property (fs.SCHEME.impl) naming the FileSystem implemnetation class.    The uri's authority is used to determine the host, port, etc. for a filesystem.</description>  </property></configuration>

這里指定了緩存目錄 $HADOOP_HOME/tmp 和默認文件系統(tǒng)

  • 配置 hdfs-site.xml
<configuration>  <property>    <name>dfs.replication</name>    <value>2</value>    <final>true</final>    <description>Default block replication.    The actual number of replications can be specified when the file is created.    The default is used if replication is not specified in create time.    </description>  </property>  <property>    <name>dfs.namenode.name.dir</name>    <value>/usr/local/hadoop/hadoop-2.7.2/namenode</value>    <final>true</final>  </property>  <property>    <name>dfs.datenode.data.dir</name>    <value>/usr/local/hadoop/hadoop-2.7.2/datanode</value>    <final>true</final>  </property></configuration>

這里指定了備份的數(shù)目、 namenode 和 datanode 的目錄

  • 配置 mapred-site.xml
<configuration>  <property>    <name>maperd.job.tracker</name>    <value>master:9001</value>    <description>The host and port that the MapReduce job tracker runs at.    IF "local", then jobs are run in-process as a single map and reduce task</description>  </property></configuration>

這里指定了 MapReduce 作業(yè)調(diào)度程序的工作主機和端口。

配置免密碼登錄

ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsacd ~/.ssh#獲取宿主機的公鑰,方便宿主機登錄scp melo@172.17.0.1:~/.ssh/id_rsa.pub authorized_keyscat id_rsa.pub >> authorized_keyschmod 600 authorized_keys

還有一個細節(jié),因為后面運行時,如果每次都從鏡像啟動,那都是全新的環(huán)境,使用 ssh 登錄時是需要確認的。

為了避免不必要的麻煩,特意查了資料,找到解決辦法。

想要達到連接新主機時不用確認的效果,就需要修改客戶端的 ssh 配置的StrictHostKeyChecking 。該參數(shù)默認為 ask ,修改為 no

Host *  StrictHostKeyChecking no

感謝@GotGit的文章 http://www.worldhello.net/2010/04/08/1026.html

Docker配置

保存Container

docker commit -m "hadoop installed" <container id|container name> centos:hadoop

#啟動 Hadoop

一開始沒有理清 hadoop 的網(wǎng)絡(luò)模型,以為需要每個節(jié)點都需要知道其他所有節(jié)點的地址,一直在配置固定 IP 。

但認真想一下, hadoop 并沒有這樣的需求,它只需要 master 知道其他節(jié)點在哪里就行了, slave 之間根本不需要通信。

所以上面創(chuàng)建的鏡像已經(jīng)可以使用了。

啟動容器

$ docker run -d --name slave1 centos:hadoop /root/run.sh$ docker run -d --name slave2 centos:hadoop /root/run.sh$ docker run -d --name master -h master -P --link slave1:slave1 --link slave2:slave2 centos:hadoop /root/run.sh

我將以上三個命令寫到了一個啟動腳本里,直接就可以啟動了,然后在用 ssh 登錄到 master 上啟動 hadoop 
因為使用的是 docker 的默認網(wǎng)絡(luò),所有可以算出 master 的 IP 地址,當然,也可以通過 docker netword inspect bridge 命令去獲取

啟動 Hadoop

切換到 $HADOOP_HOME 目錄,首先格式化 namenode :

./bin/hadoop namenode -format

看到如下信息,說明格式化成功了。

然后就可以啟動 Hadoop 了

$ ./sbin/start-all.shThis script is Deprecated. Instead use start-dfs.sh and start-yarn.shStarting namenodes on [master]master: Warning: Permanently added 'master,172.17.0.4' (RSA) to the list of known hosts.master: starting namenode, logging to /usr/local/hadoop/hadoop-2.7.2/logs/hadoop-root-namenode-master.outlocalhost: starting datanode, logging to /usr/local/hadoop/hadoop-2.7.2/logs/hadoop-root-datanode-master.outStarting secondary namenodes [0.0.0.0]0.0.0.0: Warning: Permanently added '0.0.0.0' (RSA) to the list of known hosts.0.0.0.0: starting secondarynamenode, logging to /usr/local/hadoop/hadoop-2.7.2/logs/hadoop-root-secondarynamenode-master.outstarting yarn daemonsstarting resourcemanager, logging to /usr/local/hadoop/hadoop-2.7.2/logs/yarn-root-resourcemanager-master.outlocalhost: starting nodemanager, logging to /usr/local/hadoop/hadoop-2.7.2/logs/yarn-root-nodemanager-master.out#使用 jps 查看進程$ jps480 SecondaryNameNode640 ResourceManager737 NodeManager290 DataNode195 NameNode1192 Jps

使用瀏覽器查看 web 管理接口

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
hadoop安裝教程
hadoop核心配置文件
hadoop完全分布式下datanode無法啟動解決辦法
Hadoop分布式集群
如何裝Hadoop?詳細點哈?
Hadoop海量級分布式存儲
更多類似文章 >>
生活服務(wù)
熱點新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服