在阿里云上搭建hadoop
镜像:centos
容器:docker
软件:hadoop
阿里云centos+Docker+hadoop
Docker
在Centos7下面安装docker
(1)移除旧版:
yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \docker-latest-logrotate \docker-logrotate \ docker-selinux \ docker-engine-selinux \ docker-engine
(2)安装工具:
yum install -y yum-utils device-mapper-persistent-data lvm2
(3)添加软件源信息:
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
(4)更新yum缓存:
yum makecache fast
(5)安装
docker-ce:yum -y install docker-ce
(6)启动:
systemctl start docker
(7)查看:
systemctl status docker
(8)运行hello-world:
docker run hello-world
在docker中安装centos镜像
(1)查找镜像:
docker search centos
(2)下载镜像:
docker pull centos
(3)查看镜像:
docker images
(4)运行镜像:
docker run -itd centos:latest /bin/bash
(5)查看容器:
docker ps
(6)进入镜像:
docker attach 容器id
(7)停止容器:
docker stop 容器id
(8)删除容器:
docker rm 容器id
如果centos镜像中运行systemctl报错,按下面步骤运行镜像
(1)运行镜像:
docker run -d --name centos --privileged=true centos:lstest
/usr/sbin/init
(2)进入镜像:
docker exec -it centos /bin/bash
Docker 国内源
参考源
阿里镜像(建议)
进入管理控制台 --> 产品与服务 --> 弹性计算 --> 容器镜像服务 --> 镜像加速器,复制自己的专属加速器地址。
添加
Linux
vi /etc/docker/daemon.json
MAC
请前往 Preferences -> Daemon 处设置
重启 docker
Linux
镜像部署
systemctl restart docker
拉取
docker pull centos:centos7
检查本地镜像
docker images
启动
docker run -itd --name 「DIY Image Name」 centos:centos7 /bin/Bash
查看启动信息
docker ps
管理容器
docker start/kill/stop/rm 「CONTAINER ID」
进入容器
docker exec -it 「CONTAINER ID」 /bin/Bash
制作开发环境镜像
Centos 国内源
基础工具安装
(1)vim
Linux 最好用的文本编辑器
yum -y install vim
(2)net-tools
Linux 网络管理工具
yum -y install net-tools
openssh-clients/openssh-server
(3)ssh 客户端
yum -y install openssh-clients && yum -y install openssh-server
(4)openssl
通过 SSL 保障,保证安全通信的软件库包
yum -y install openssl
(5)wget
远程下载工具
yum -y install wget
制作镜像
打包镜像
docker commit -a "「Image Name」" -m "「Comment」" 「CONTAINER ID」 「Image Name」:v「version」
开始生产集群
统一口径
创建网络
docker network create --subnet=192.168.10.1/24 「Net Name」
统一 IP 和 Host
NameNode
docker run -itd --name master \
--privileged=true -p 8020:8020 -p 9870:9870 -p 19888:19888 -p 9000:9000 -p 50070:50070 \
--hostname master \
--net netme --ip 192.168.10.10 \
--add-host slave01:192.168.10.11 \
--add-host slave02:192.168.10.12 \
-d hdp:1.0 \
/usr/sbin/init
如果需要开放端口请添加-p参数内容为 容器内端口:映射至本机的端口
DataNode 1
docker run -itd --name slave01 \
--privileged=true -p 8088:8080 \
--hostname slave01 \
--net netme --ip 192.168.10.11 \
--add-host master:192.168.10.10 \
--add-host slave02:192.168.10.12 \
-d hdp:1.0 \
/usr/sbin/init
DataNode 2
docker run -itd --name slave02 \
--privileged=true \
--hostname slave02 \
--net netme --ip 192.168.10.12 \
--add-host master:192.168.10.10 \
--add-host slave02:192.168.10.11 \
-d hdp:1.0 \
/usr/sbin/init
hadoop
#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.1.3
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
- 修改 /opt/module/hadoop-3.1.3/sbin/start-dfs.sh和 /opt/module/hadoop-3.1.3/sbin/stop-dfs.sh
vim /opt/module/hadoop-3.1.3/sbin/start-dfs.sh
vim /opt/module/hadoop-3.1.3/sbin/stop-dfs.sh
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
- 修改 /opt/module/hadoop-3.1.3/sbin/start-yarn.sh和 /opt/module/hadoop-3.1.3/sbin/stop-yarn.sh
vim /opt/module/hadoop-3.1.3/sbin/start-yarn.sh
vim /opt/module/hadoop-3.1.3/sbin/stop-yarn.sh
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
core-xml.site
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-3.1.3/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:8020</value>
</property>
<property>
<name>hadoop.http.staticuser.user</name>
<value>root</value>
</property>
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
hdfs-xml.site
<property>
<name>dfs.namenode.http-address</name>
<value>master:9870</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>slave02:9868</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
yarn-xml.site
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>slave01</value>
</property>
<property>
<name>yarn.nodemanager.env-whitelist</name> <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log.server.url</name>
<value>http://master:19888/jobhistory/logs</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
mareduce-xml.site
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=/opt/module/hadoop-3.1.3</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=/opt/module/hadoop-3.1.3</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=/opt/module/hadoop-3.1.3</value>
</property>
slaves/works
bigdata1
bigdata2
bigdata3
hadoop-env.sh
JAVA_HOME=/opt/module/jdk1.8.0_212