docker手?jǐn)]hadoop偽分布式

基礎(chǔ)搭建

docker pull centos
docker run -idt -h node0 --name --privileged --name ssh_centos centos /usr/sbin/init
docker exec -it ssh_centos /bin/bash

#進(jìn)入了容器

#修改源文件 下載提速
yum -y install wget   #安裝wget
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup  #備份源
cd /etc/yum.repos.d/
rpm -q centos-release #查看系統(tǒng)版本 是centos-8
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-8.repo  #下載對(duì)應(yīng)版本的源文件
yum makecache #生成緩存
yum -y update #更新系統(tǒng)


#設(shè)置防火墻(關(guān)閉防火墻)
 #安裝dnf
    
yum install epel-release -y
yum install dnf -y

#安裝防火墻
dnf install firewalld

#查看防火墻狀態(tài)
firewall-cmd --state 
      
                (1)設(shè)置開(kāi)機(jī)啟用防火墻:systemctl enable firewalld.service
                
                (2)設(shè)置開(kāi)機(jī)禁用防火墻:systemctl disable firewalld.service
                
                (3)啟動(dòng)防火墻:systemctl start firewalld
                
                (4)關(guān)閉防火墻:systemctl stop firewalld
                
                (5)檢查防火墻狀態(tài):systemctl status firewalld 



#查看網(wǎng)絡(luò)
 yum install net-tools
 ifconfig   #ip 是 172.17.0.8

yum install passwd
passwd #設(shè)置密碼
yum install openssh-server
yum install openssh-clients
systemctl start sshd.service
ssh localhots #輸入密碼 登錄 生成 ~/.ssh目錄
exit #從ssh退回到容器中

vi /etc/ssh/sshd_config
#編輯ssh配置文件
    添加
    RSAAuthorization yes
    PubkeyAuthentication yes
  
執(zhí)行
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
systemctl restart sshd.service

ssh localhost #發(fā)現(xiàn)可以免密登錄了

#設(shè)置時(shí)間同步
rpm -ivh http://mirrors.wlnmp.com/centos/wlnmp-release-centos.noarch.rpm
yum install wntp
ntpdate ntp1.aliyun.com

這里我們完成了基本環(huán)境的配置 提交為新的鏡像 新開(kāi)一個(gè)容器

docker commit ssh_centos centos_base

docker run -idt -h node0 -p 10022:22 --privileged --name hadoop centos_base /usr/sbin/init

#安裝jdk hadoop 配置環(huán)境變量
xshell遠(yuǎn)程鏈接docker 上傳hadoop和jdk
解壓  hadoop/rpm -i jdk

#設(shè)置環(huán)境變量 
vi /etc/profile
    export JAVA_HOME=/usr/java/default
    export HADOOP_HOME=/opt/bigdata/hadoop-2.6.5
    export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source /etc/profile

配置hadoop

cd $HADOOP_HOME/etc/hadoop

1必須給hadoop配置javahome ssh遠(yuǎn)程執(zhí)行不加載全局變量
vi hadoop-env.sh
    修改 export JAVA_HOME=${JAVA_HOME}
    為   export JAVA_HOME=/usr/java/default


2 給出nameNode啟動(dòng)路徑
vi core-site.xml
    在configuration中添加(node0是我的當(dāng)前主機(jī)名)
         <property>
            <name>fs.defaultFS</name>
            <value>hdfs://node0:9000</value>
         </property>
     
3配置hdfs 副本數(shù)為1
vi hdfs-site.xml
     在configuration中添加
        <property>
            <name>dfs.replication</name>
            <value>1</value>
        </property>
        <property>
            <name>dfs.namenode.name.dir</name>
            <value>/var/bigdata/hadoop/local/dfs/name</value>
        </property>
        <property>
            <name>dfs.datanode.data.dir</name>
            <value>/var/bigdata/hadoop/local/dfs/data</value>
        </property>
        <property>
            <name>dfs.namenode.secondary.http-address</name>
            <value>node01:50090</value>
        </property>
        <property>
            <name>dfs.namenode.checkpoint.dir</name>
            <value>/var/bigdata/hadoop/local/dfs/secondary</value>
        </property>

4配置slaves 啟動(dòng)位置
    vi slaves
            node0

啟動(dòng)hdfs 這里遇到的bug我也會(huì)記錄下來(lái)

初始化NN
[root@node0 hadoop-2.6.5]# hdfs namenode -format
/opt/hadoop-2.6.5/bin/hdfs: line 28: which: command not found
dirname: missing operand

報(bào)錯(cuò) 可以看到 which command not found
解決: 安裝 which命令

yum install which

再次初始化 成功!

啟動(dòng) start-dfs.sh 成功!

重新commit了個(gè)鏡像 把我們的工作成果保存好 命名為hadoop
再次啟動(dòng) 一個(gè)容器 暴露50070/22 端口

shell-init: error retrieving current directory: getcwd: cannot access parent directories: No such fi
這個(gè)是因?yàn)楫?dāng)前目錄被刪除 cd到一個(gè)存在的目錄即可

啟動(dòng)hdfs 訪問(wèn)localhost:50070  
發(fā)現(xiàn) datanode 里沒(méi)有項(xiàng)目DN
切換到上面配置的NN和DN的路徑下有一個(gè)VERSION文件
查看可以發(fā)現(xiàn)NN的clusterID和DN的clusterID不一致
手動(dòng)將DN的ID修改為DN的cluster一樣即可

之后會(huì)搭建完全分布式(多節(jié)點(diǎn))

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容