跨主机Docker搭建hadoop集群

2018-10-09  本文已影响0人  请不要问我是谁

两台主机:spark0 ip:10.112.154.98 spark1 ip:10.112.203.31
镜像中已安装hadoop

将两个容器运行起来

docker run -it -h master --name master $image_name  # 主节点
docker run -it -h slave01 --name slave01 $image_name  # 从节点

利用weave将两容器联通

weave attach 192.168.0.2/24 $master_container_id
weave connect $ip  # slave01主机ip
weave attach 192.168.0.2/24 $slave01_container_id
weave connect $ip  # master主机ip

hadoop配置

打开hadoop_env.sh文件,修改JAVA_HOME:

#假设现在/usr/local/hadoop目录下
vim etc/hadoop/hadoop-env.sh
# 将export JAVA_HOME=${JAVA_HOME}替换成
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/

打开core-site.xml,输入一下内容:

<configuration>
      <property>
          <name>hadoop.tmp.dir</name>
          <value>file:/usr/local/hadoop/tmp</value>
          <description>Abase for other temporary directories.</description>
      </property>
      <property>
          <name>fs.defaultFS</name>
          <value>hdfs://master:9000</value>
      </property>
</configuration>

打开hdfs-site.xml输入以下内容:

<configuration>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/usr/local/hadoop/namenode_dir</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/usr/local/hadoop/datanode_dir</value>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
</configuration>

修改mapred-site.xml(复制mapred-site.xml.template,再修改文件名),输入以下内容:

 <configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
  </configuration>

修改yarn-site.xml文件,输入以下内容:

<configuration>
  <!-- Site specific YARN configuration properties -->
      <property>
          <name>yarn.nodemanager.aux-services</name>
          <value>mapreduce_shuffle</value>
      </property>
      <property>
          <name>yarn.resourcemanager.hostname</name>
          <value>master</value>
      </property>
  </configuration>

修改/etc/hosts

192.168.0.2  master
192.168.0.3  slave01

开启hadoop

打开master上的slaves文件,输入slave的主机名:

vim etc/hadoop/slaves
# 将localhost替换成两个slave的主机名
slave01

在master终端上,首先进入/usr/local/hadoop,然后运行如下命令:

cd /usr/local/hadoop
bin/hdfs namenode -format
sbin/start-all.sh

这时Hadoop集群就已经开启,我们可以在master,slave01和slave02上分别运行命令jps查看运行结果;
下面是运行结果图:



运行Hadoop实例程序grep

在hdfs上创建一个目录:

./bin/hdfs dfs -mkdir -p /user/hadoop/input

将/usr/local/hadoop/etc/hadoop/目录下的所有文件拷贝到hdfs上的目录:

./bin/hdfs dfs -put ./etc/hadoop/*.xml /user/hadoop/input

通过ls命令查看下是否正确将文件上传到hdfs下:

./bin/hdfs dfs -ls /user/hadoop/input

通过运行下面命令执行实例程序:

./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep /user/hadoop/input output 'dfs[a-z.]+'

在hdfs上的output目录下查看到运行结果:

./bin/hdfs dfs -cat output/*
1   dfsadmin
1   dfs.replication
1   dfs.namenode.name.dir
1   dfs.datanode.data.dir
上一篇下一篇

猜你喜欢

热点阅读