吐血整理,搭建了兩遍,親測可用!!!
我買的是阿里雲2C4G的服務器,使用的是CentOS 7.7版本。在搭建過程中踩了不少坑,本篇文章希望對大家有用
CentOS 7.7安裝Docker
查看內核版本(使用root用戶登陸)
uname -a把yum包更新到最新
yum update安裝需要的軟件包
yum install -y yum-utils device-mapper-persistent-data lvm2設置yum源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo創建目錄
cd /mnt
mkdir docker
cd docker可以查看所有倉庫中所有docker版本,並選擇特定版本安裝
yum list docker-ce --showduplicates | sort -r安裝Docker,命令:yum install docker-ce-版本號
yum install docker-ce-18.06.3.ce啟動並加入開機啟動
systemctl start docker
systemctl enable docker驗證安裝是否成功(有client和service兩部分表示docker安裝啟動都成功了)
docker versionUbuntu 18.04 安裝Docker
創建目錄
cd /mnt
mkdir docker
cd docker下載
wget https://mirrors.aliyun.com/docker-ce/linux/ubuntu/dists/bionic/pool/stable/amd64/containerd.io_1.2.6-3_amd64.deb
wget https://mirrors.aliyun.com/docker-ce/linux/ubuntu/dists/bionic/pool/stable/amd64/docker-ce-cli_19.03.9~3-0~ubuntu-bionic_amd64.deb
wget https://mirrors.aliyun.com/docker-ce/linux/ubuntu/dists/bionic/pool/stable/amd64/docker-ce_19.03.9~3-0~ubuntu-bionic_amd64.deb安裝
sudo dpkg -i *.deb啟動
service docker start生成服務器、Hadoop鏡像
獲取centos7鏡像
docker pull centos查看鏡像列表
docker images安裝SSH
cd /mnt/docker
mkdir ssh
cd ssh
vi Dockerfile內容
FROM centos
MAINTAINER dys
RUN yum install -y openssh-server sudo
RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config
RUN yum install -y openssh-clients
RUN echo "root:1234" | chpasswd
RUN echo "root ALL=(ALL) ALL" >> /etc/sudoers
RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
RUN mkdir /var/run/sshd
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]保存並退出
執行構建鏡像的命令,新鏡像命名為 centos7-ssh
docker build -t="centos7-ssh" .
基於 centos7-ssh 這個鏡像啟動三個容器
docker run -d --name=centos7.ssh centos7-ssh
docker run -d --name=centos7.ssh2 centos7-ssh
docker run -d --name=centos7.ssh3 centos7-ssh構建Hadoop鏡像
創建目錄
cd /mnt/docker
mkdir hadoop
cd hadoop下載jar包
//下載hadoop,構建鏡像時使用
wget https://mirrors.bfsu.edu.cn/apache/hadoop/common/hadoop-2.9.2/hadoop-2.9.2.tar.gz
//下載jdk,構建鏡像時使用
wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u141-b15/336fa29ff2bb4ef291e347e091f7f4a7/jdk-8u141-linux-x64.tar.gz"編輯DockerFile
vi Dockerfile內容
FROM centos7-ssh
ADD jdk-8u141-linux-x64.tar.gz /usr/local/
RUN mv /usr/local/jdk1.8.0_141 /usr/local/jdk1.8
ENV JAVA_HOME /usr/local/jdk1.8
ENV PATH $JAVA_HOME/bin:$PATH
ADD hadoop-2.9.2.tar.gz /usr/local
RUN mv /usr/local/hadoop-2.9.2 /usr/local/hadoop
ENV HADOOP_HOME /usr/local/hadoop
ENV PATH $HADOOP_HOME/bin:$PATH
RUN yum install -y which sudo保存並退出
執行構建命令
docker build -t="hadoop" .運行容器
docker run --name hadoop0 --hostname hadoop0 -d -P -p 50070:50070 -p 8088:8088 hadoop
docker run --name hadoop1 --hostname hadoop1 -d -P hadoop
docker run --name hadoop2 --hostname hadoop2 -d -P hadoopHadoop 集群搭建
配置ll命令
vim ~/.bashrc內容
增加下面的配置
alias ll='ls -l'保存退出
重新加載
source ~/.bashrc安裝vim、net-tools
yum install net-tools
yum install vim修改每台服務器的 /etc/hosts
使用ifconfig命令查看自己的IP,改為自己服務器的IP
172.18.0.5 hadoop0
172.18.0.6 hadoop1
172.18.0.7 hadoop2修改時區
rm -rf /etc/localtime
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtimeSSH無密碼登陸
在每台服務器上都執行以下命令,執行後會有多個輸入提示,不用輸入任何內容,全部直接回車即可
ssh-keygen 輸入下面命令時,需要用到上面設置的密碼1234
ssh-copy-id -i /root/.ssh/id_rsa -p 22 root@hadoop0
ssh-copy-id -i /root/.ssh/id_rsa -p 22 root@hadoop1
ssh-copy-id -i /root/.ssh/id_rsa -p 22 root@hadoop2安裝配置 hadoop
在 master 中執行
cd /usr/local/hadoop
mkdir tmp hdfs
mkdir hdfs/data hdfs/name配置core-site.xml
vim /usr/local/hadoop/etc/hadoop/core-site.xml在 塊兒中添加:
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop0:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131702</value>
</property>配置hdfs-site.xml
vim /usr/local/hadoop/etc/hadoop/hdfs-site.xml在 塊兒中添加:
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/hdfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/hdfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop0:9001</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>配置mapred-site.xml
這個文件默認不存在,需要從 mapred-site.xml.template 複製過來
cp /usr/local/hadoop/etc/hadoop/mapred-site.xml.template /usr/local/hadoop/etc/hadoop/mapred-site.xml編輯文件
vim /usr/local/hadoop/etc/hadoop/mapred-site.xml在 塊兒中添加:
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop0:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop0:19888</value>
</property>配置yarn-site.xml
vim /usr/local/hadoop/etc/hadoop/yarn-site.xml在 塊兒中添加:
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>hadoop0:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>hadoop0:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>hadoop0:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>hadoop0:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>hadoop0:8088</value>
</property>配置slaves
vim /usr/local/hadoop/etc/hadoop/slaves刪除已有內容,添加:
hadoop1
hadoop2配置hadoop-env.sh
vim /usr/local/hadoop/etc/hadoop/hadoop-env.sh找到 export JAVA_HOME=${JAVA_HOME},改為自己JAVA_HOME的絕對路徑
export JAVA_HOME=/usr/local/jdk1.8複製文件到 hadoop1,hadoop2
scp -r /usr/local/hadoop hadoop1:/usr/local
scp -r /usr/local/hadoop hadoop2:/usr/local設置 hadoop 環境變量
在每台服務器上都執行:
vim ~/.bashrc增加內容
export PATH=$PATH:/usr/local/hadoop/bin:/usr/local/hadoop/sbin保存退出,重新加載資源
source ~/.bashrc啟動 hadoop
在master啟動hadoop,從節點會自動啟動
初始化
hdfs namenode -format啟動
hadoop-daemon.sh start namenode
hadoop-daemon.sh start datanode
start-dfs.sh
start-yarn.sh
mr-jobhistory-daemon.sh start historyserver測試
如果您使用的也是阿里雲服務器,那需要在阿里雲客戶端調整安全組,阿里雲默認只開放22端口,所以需要把50070、8088都開通
端口號.png
瀏覽器中訪問:
http://服務器IP:50070/
圖片1.png
http://服務器IP:8088/hdfs 操作
hdfs dfs -mkdir -p /usr/local/hadoop/input
hdfs dfs -put /usr/local/hadoop/etc/hadoop/kms*.xml /usr/local/hadoop/inputhttp://服務器IP:50070/,在文件瀏覽頁面查看
驗證hdfs.png
mapreduce 操作
hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.2.jar grep /usr/local/hadoop/input /usr/local/hadoop/output 'dfs[a-z.]+'
驗證mapreduce.png
原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/216788.html
微信掃一掃
支付寶掃一掃