這篇文章主要介紹了vmware虛擬機redhat7.2下docker容器怎么安裝hadoop,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
成都創(chuàng)新互聯(lián)從2013年成立,是專業(yè)互聯(lián)網(wǎng)技術服務公司,擁有項目網(wǎng)站制作、成都網(wǎng)站建設網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元泗縣做網(wǎng)站,已為上家服務,為泗縣各地企業(yè)和個人服務,聯(lián)系電話:028-86922220
ip配置:
# cat /etc/sysconfig/network-scripts/ifcfg-eno16777736 TYPE=Ethernet BOOTPROTO=static DEFROUTE=yes PEERDNS=yes PEERROUTES=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_PEERDNS=yes IPV6_PEERROUTES=yes IPV6_FAILURE_FATAL=no NAME=eno16777736 UUID=dadee176-cc84-43f4-9ea9-e30a30ca3abf DEVICE=eno16777736 ONBOOT=yes #20160708 add IPADDR0=192.168.128.130 PREFIXO0=24 GATEWAY0=192.168.128.1 #DNS1= #DNS2=
DNS配置
# cat /etc/resolv.conf # Generated by NetworkManager # No nameservers found; try putting DNS servers into your # ifcfg files in /etc/sysconfig/network-scripts like so: # # DNS1=xxx.xxx.xxx.xxx # DNS2=xxx.xxx.xxx.xxx # DOMAIN=lab.foo.com bar.foo.com nameserver 192.168.128.1
本地yum配置
# 掛載iso文件 # mkdir -p /media/cdrom # vi /etc/fstab ''' /opt/rhel-server-7.2-x86_64-dvd.iso /media/cdrom iso9660 defaults,ro,loop 0 0 ''' # mount -a # df -lh ''' /dev/loop0 3.8G 3.8G 0 100% /media/cdrom ''' # vi /etc/yum.repos.d/rhel-media.repo [rhel-media] name=Red Hat Enterprise Linux 7.2 baseurl=file:///media/cdrom enabled=1 gpgcheck=1 gpgkey=file:///media/cdrom/RPM-GPG-KEY-redhat-release # 清理緩存 # yum clean # 將服務器上的軟件包信息在本地緩存,以提高 搜索安裝軟件的速度 # yum makecache
主機名修改
hostnamectl --staticset-hostname rhels7-docker
一、安裝docker
因國內(nèi)訪問docker官網(wǎng)速度問題,這里使用國內(nèi)的加速鏡像 daocloud.io
curl -sSL https://get.daocloud.io/docker | sh
安裝過程將會創(chuàng)建一個用戶組 docker
查看docker版本
docker version
啟動docker,并查看狀態(tài)
systemctl start docker.service systemctl status docker.service
顯示系統(tǒng)信息(前提:docker服務處于啟動狀態(tài))
docker info
二、拉取centos鏡像
docker pull daocloud.io/library/centos:centos7
三、啟動鏡像
1、先查看本地鏡像
docker images
如下:
說明:centos是安裝完hadoop后的鏡像,daocloud.io/library/centos是剛剛拉取的,下面的操作都是基于此進行的
2、啟動
docker run -h master --dns=192.168.128.1 -it daocloud.io/library/centos:centos7
說明:
-h master #指定主機名
--dns=192.168.128.1 #因人而異,配置錯誤將影響后期軟件安裝
-it #以交互模式啟動
具體可docker run --help查看
四、安裝必要軟件及配置
1、安裝基礎軟件
yum install -y wget vim openssh-server openssh-clients net-tools
說明: netstat, ifconfig命令包含在net-tools包中
安裝完后并不會啟動sshd服務,容器是被docker管理的,無法使用一些系統(tǒng)命令,要啟動sshd需要執(zhí)行如下命令:
/usr/sbin/sshd -D &
注意:sshd服務是hadoop必須的,在此通過腳本實現(xiàn)啟動容器就運行sshd
vi /root/run.sh 內(nèi)容 #!/bin/bash /usr/sbin/sshd -D 賦權 chmod +x /root/run.sh
2、網(wǎng)絡配置
docker容器通過橋接與外部通信,不想每次啟動容器都要指定dns
修改默認dns
2.1修改宿主機配置文件 /etc/default/docker
DOCKER_NETWORK_OPTIONS="--dns=192.168.128.1"
2.2修改宿主機配置文件 /lib/systemd/system/docker.service
[Service] EnvironmentFile=-/etc/default/docker ExecStart=/usr/bin/docker daemon -H fd:// $OPTIONS \ $DOCKER_NETWORK_OPTIONS
詳見:http://docs.master.dockerproject.org/engine/admin/systemd/
重啟宿主機docker服務
systemctl daemon-reload systemctl restart docker.service #使用這個命令可以查看 docker 的啟動命令是否生效 ps -ef | grep docker
root 2415 1 0 14:41 ? 00:00:10 /usr/bin/docker daemon -H fd:// --dns=192.168.128.1
root 2419 2415 0 14:41 ? 00:00:01 docker-containerd -l /var/run/docker/libcontainerd/docker-containerd.sock --runtime docker-runc --start-timeout 2m
3、安裝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.gz mkdir /usr/java tar zxf jdk-8u91-linux-x64.tar.gz -C /usr/java echo 'export JAVA_HOME=/usr/java/jdk1.8.0_91' >> /etc/bashrc echo 'export PATH=$PATH:$JAVA_HOME/bin' >> /etc/bashrc echo 'export CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar' >> /etc/bashrc source /etc/bashrc
4、安裝hadoop
4.1 安裝hadoop,并配置環(huán)境變量
wget http://mirrors.cnnic.cn/apache/hadoop/common/hadoop-2.7.2/hadoop-2.7.2.tar.gz mkdir /usr/local/hadoop tar zxf hadoop-2.7.2.tar.gz -C /usr/local/hadoop echo 'export HADOOP_HOME=/usr/local/hadoop/hadoop-2.7.2' >> /etc/bashrc echo 'export HADOOP_CONFIG_HOME=$HADOOP_HOME/etc/hadoop' >> /etc/bashrc echo 'export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin' >> /etc/bashrc source /etc/bashrc
4.2 配置hadoop
在HADOOP_HOME
目錄下創(chuàng)建如下目錄
tmp:臨時目錄
namenode:NameNode 存放目錄
datanode:DataNode 存放目錄
切換到HADOOP_CONFIG_HOME
目錄
cp mapred-site.xml.template mapred-site.xml
配置 core-site.xml
hadoop.tmp.dir /usr/local/hadoop/hadoop-2.7.2/tmp A base for other temporary dirctories. fs.default.name hdfs://master:9000 true 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.
配置hdfs-site.xml
dfs.replication 2 true 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. dfs.namenode.name.dir /usr/local/hadoop/hadoop-2.7.2/namenode true dfs.datenode.data.dir /usr/local/hadoop/hadoop-2.7.2/datanode true
配置mapred-site.xml
maperd.job.tracker master:9001 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
4.3 配置ssh免密碼登錄
ssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -N '' ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N '' ssh-keygen -t dsa -f /etc/ssh/ssh_host_ed25519_key -N ''
然后修改master容器/etc/ssh/sshd_config文件
UsePAM yes 改為 UsePAM no
UsePrivilegeSeparation sandbox 改為 UsePrivilegeSeparation no
[root@b5926410fe60 /]# sed -i "s/#UsePrivilegeSeparation.*/UsePrivilegeSeparation no/g" /etc/ssh/sshd_config [root@b5926410fe60 /]# sed -i "s/UsePAM.*/UsePAM no/g" /etc/ssh/sshd_config 修改完后,重新啟動sshd [root@b5926410fe60 /]# /usr/sbin/sshd -D
4.4 修改容器root密碼
passwd root
5、保存該docker容器container
docker commit -m "hadoop installed" 690a57e02578 centos:hadoop
刪除多余容器
docker rm
說明:690a57e02578 為container_id,因人而異,可通過docker ps查看
保存完成后,可通過docker images查看本地鏡像
REPOSITORY TAG IMAGE ID CREATED SIZE
centos hadoop b01079411e19 45 seconds ago 1.434 GB
daocloud.io/library/centos centos7 ea08fb8c4ba5 7 days ago 196.8 MB
五、啟動hadoop
說明:關鍵因素1、sshd服務,2、/etc/hosts配置到master節(jié)點的映射
修改容器的/root/run.sh,容器ip默認從172.17.0.2開始分配,3個節(jié)點,最后一個啟動master節(jié)點,故能確定masterip為172.17.0.4
#!/bin/bash echo '172.17.0.4 master' >> /etc/hosts /usr/sbing/sshd -D
另:在宿主機上也可根據(jù)container_id用docker inspect
docker inspect -f '{{ .NetworkSettings.IPAddress }}' 690a57e02578 docker inspect -f '{{ .NetworkSettings.MacAddress }}' 690a57e02578 docker inspect -f '{{ .Config.Hostname }}' 690a57e02578
1、基于新鏡像(centos:hadoop)運行啟動3個容器
docker run -d -p 10012:22 --name slave1 centos:hadoop /root/run.sh docker run -d -p 10022:22 --name slave2 centos:hadoop /root/run.sh docker run -d -p 10002:22 --name master -h master -P --link slave1:slave1 --link slave2:slave2 centos:hadoop /root/run.sh
說明:-p參數(shù)指定容器22端口分別映射到宿主機端口,本地可通過ssh訪問宿主機10002/10012/10022端口連接到3個容器中
2、啟動hadoop
2.1 連入master容器
docker exec -it 175c3129e021 /bin/bash
2.2 格式化namenode
hdfs namenode -format
顯示如下信息,表示格式化成功
16/07/09 08:12:36 INFO common.Storage: Storage directory /usr/local/hadoop/hadoop-2.7.2/namenode has been successfully formatted.
16/07/09 08:12:36 INFO namenode.NNStorageRetentionManager: Going to retain 1 images with txid >= 0
16/07/09 08:12:36 INFO util.ExitUtil: Exiting with status 0
2.3 啟動hadoop
因已配置好環(huán)境變量,進入容器后,可直接運行
start-all.sh
使用jps查看進程
# jps 163 NameNode 675 NodeManager 1316 Jps 581 ResourceManager 279 DataNode 429 SecondaryNameNode
六、宿主機配置iptables實現(xiàn)端口轉(zhuǎn)發(fā)
轉(zhuǎn)發(fā)方向:容器端口50070 <---> 宿主機50070
在宿主機執(zhí)行
iptables -t nat -A PREROUTING -d 192.168.128.130 -p tcp --dport 50070 -j DNAT --to-destination 172.17.0.4:50070
說明:192.168.128.130 為宿主機,172.17.0.4為master容器
至此,本地即可訪問虛擬機(或說宿主機)上容器中的hadoop集群
感謝你能夠認真閱讀完這篇文章,希望小編分享的“vmware虛擬機redhat7.2下docker容器怎么安裝hadoop”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關知識等著你來學習!