您好,登錄后才能下訂單哦!
這篇文章主要介紹了vmware虛擬機redhat7.2下docker容器怎么安裝hadoop,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
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
因國內訪問docker官網速度問題,這里使用國內的加速鏡像 daocloud.io
curl -sSL https://get.daocloud.io/docker | sh
安裝過程將會創建一個用戶組 docker
查看docker版本
docker version
啟動docker,并查看狀態
systemctl start docker.service systemctl status docker.service
顯示系統信息(前提:docker服務處于啟動狀態)
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管理的,無法使用一些系統命令,要啟動sshd需要執行如下命令:
/usr/sbin/sshd -D &
注意:sshd服務是hadoop必須的,在此通過腳本實現啟動容器就運行sshd
vi /root/run.sh 內容 #!/bin/bash /usr/sbin/sshd -D 賦權 chmod +x /root/run.sh
2、網絡配置
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,并配置環境變量
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
目錄下創建如下目錄
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>
配置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>
配置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>
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 <container_id>
說明: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節點的映射
修改容器的/root/run.sh,容器ip默認從172.17.0.2開始分配,3個節點,最后一個啟動master節點,故能確定masterip為172.17.0.4
#!/bin/bash echo '172.17.0.4 master' >> /etc/hosts /usr/sbing/sshd -D
另:在宿主機上也可根據container_id用docker inspect <CONTAINER_ID>:查看容器詳細信息(輸出為Json)如:ip、mac、hostname等
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參數指定容器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
因已配置好環境變量,進入容器后,可直接運行
start-all.sh
使用jps查看進程
# jps 163 NameNode 675 NodeManager 1316 Jps 581 ResourceManager 279 DataNode 429 SecondaryNameNode
六、宿主機配置iptables實現端口轉發
轉發方向:容器端口50070 <---> 宿主機50070
在宿主機執行
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”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。