您的位置:首页 > 运维架构 > Docker

hadoop docker安装部署

2018-01-07 23:55 417 查看


前置条件

1.jdk镜像

2.hadoop安装包


解压安装包

tar -zxvf cenos-6.5-hadoop-2.6.4.tar.gz -C /usr/local
cd /usr/local
mv hadoop-2.6.4 hadoop


修改配置文件:

cd hadoop/etc/hadoop


1.首先修改hadoop-env.sh
vim hadoop-env.sh


修改JAVA_HOME为配置好的java目录。 这里主要是因为需要脚本都是ssh到其他slaves上启动他们的进程,ssh + command的方式不是login shell。所以不会加载/etc/profile。如果无法读取到JAVA_HOME,则启动不成功,其实在容器中,如果都是自行启动自己的进程,这个变量不配置应该是没问题的。

2.修改core-site.xml
vim core-site.xml


修改成如下内容:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoopMaster:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/hadoopData</value>
</property>
</configuration>


fs.defaultFS指定了hdfs的namenode地址

hadoop.tmp.dir指定了hdfs的工作目录

3.修改hdfs-site.xml
<property>
<name>dfs.replication</name>
<value>3</value>
</property>


dfs.replication指定了数据的副本数目 这个文件还可以指定namenode工作目录和datanode工作目录,还可以指定secondaryNamenode的地址

(secondaryNamenode在高版本中基本不会被使用了,主要是用来备份namenode数据的,当namenode挂了之后可以在secondNamenode中找到数据,恢复回来,secondaryNamenode并不能代替namenode的作用,在HA中,用两个namenode的方式,secondaryNamenode基本没有使用的必要了)

4.修改mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>


mapreduce.framework.name指定了mapreduce使用的提交方式

hadoop的mapreduce方式其实相对来说已经用的不多了,后面我们采用spark来处理数据,而不使用hadoop mapreduce。所以其实这里配不配关系不大,因为我们不会启动yarn.

5.修改yarn-site.xml
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop01</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>


yarn.resourcemanager.hostname指定resourcemanager地址 yarn.nodemanager.aux-services指定了map和reduce之间使用shuffle的方式来协助。

同样的,这个其实不配也可以。因为我们不启动yarn

6.修改slaves 这个文件用来指明工作节点。当调用start-dfs.sh的时候,会读取slaves文件,并ssh过去启动上面的datanode。 如果需要的话。可以配置。 但是在我的想法里,容器启动自动启动自己的namenode或datanode,所以可以不需要slaves文件,也不需要调用start-dfs.sh


格式化namenode

启动namenode之前一定要格式化namenode,生成对应的clusterId和blockpoolID。
hdfs namenode -format


启动namenode/datanode

可以调用start-dfs.sh脚本启动整个集群,也可以一个一个自己启动。
hadoop-daemon.sh start namenode
或者
hadoop-daemon.sh start datanode


可以采用jps查看是否启动成功。 打印的日志位于$HADOOP_HOME/logs。可以查看对应的日志。

最终commit得到镜像之后

对于namenode节点,docke run增加hdfs namenode -format和hadoop-daemon.sh start namenode,并指定固定ip。

对于datanode节点,docker run增加hadoop-daemon.sh start datanode并echo "hadoopip hadoopMaster" >> /etc/hosts。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hadoop docker