Hadoop 安装部署实践

教程 青牛 ⋅ 于 2016-12-05 19:11:44 ⋅ 最后回复由 哈哈哈 2018-03-03 12:12:36 ⋅ 6388 阅读

环境准备

支持平台

GNU/Linux是产品开发和运行的平台。 Hadoop已在有4000个节点的GNU/Linux主机组成的集群系统上得到验证。
Win32平台是作为开发平台支持的。由于分布式操作尚未在Win32平台上充分测试,所以还不作为一个生产平台被支持。

所需软件

Linux和Windows所需软件包括:

JavaTM1.5.x,必须安装,建议选择Sun公司发行的Java版本。
ssh 必须安装并且保证 sshd一直运行,以便用Hadoop 脚本管理远端Hadoop守护进程。
Windows下的附加软件需求
Cygwin - 提供上述软件之外的shell支持。

安装步骤

本文以Ubuntu为测试环境,鉴于配置测试环境,不做复杂用户拆分,先部署到当前用户下。

安装软件
如果你的集群尚未安装所需软件,你得首先安装它们。

更新apt-get源配置

$sudo apt-get update

安装java环境

本文环境使用jdk1.7

两种方式使用openjdk,直接用apt-get安装

$sudo apt-get install -y openjdk-7-jdk
$export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64

或者通过oracle 官网下载jdk,然后解压安装
http://www.oracle.com/technetwork/java/javase/archive-139210.html
然后设置JAVA_HOME
本文环境 JAVA_HOME=/usr/local/jdk

lrwxrwxrwx  1 root  root    22 Jun 22 10:20 jdk -> /usr/local/jdk1.7.0_80/
drwxr-xr-x  8 uucp    143 4096 Apr 11  2015 jdk1.7.0_80/

环境变量可以配置到 .bash_profile

配置SSH环境

安装ssh服务及客户端

$sudo apt-get install -y openssh-server

启动SSH服务

$sudo service ssh start

配置免登陆

$ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ''
$cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$chmod 600 ~/.ssh/authorized_keys

免登陆测试

$ssh localhost

The authenticity of host 'localhost (::1)' can't be established.
ECDSA key fingerprint is SHA256:8PGiorJvZpfFOJkMax6qVaSG8KyRRNnVJGjhNqVqh/k.
Are you sure you want to continue connecting (yes/no)?

yes

$exit

安装Hadoop

$cd /usr/local
$sudo wget http://apache.fayea.com/hadoop/common/hadoop-2.6.4/hadoop-2.6.4.tar.gz
$sudo tar xzvf hadoop-2.6.4.tar.gz
$sudo ln -s hadoop-2.6.4.tar.gz hadoop
#修改目录权限,改成当前用户的所属
$sudo chown -R XXXXX  hadoop*

配置

配置伪分布式:
修改etc/hadoop/core-site.xml

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>

etc/hadoop/hdfs-site.xml

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
</configuration>

启动hadoop

  $ bin/hdfs namenode -format
  $ sbin/start-dfs.sh

  #查看进程
  $jps
429 SecondaryNameNode
172 NameNode
1523 Jps
286 DataNode

Namenode web地址: http://localhost:50070/

可以执行命令测试一下

# create input files
$ mkdir input
$ echo "Hello Docker" >input/file2.txt
$ echo "Hello Hadoop" >input/file1.txt

# create input directory on HDFS
$ hadoop fs -mkdir -p input

# put input files to HDFS
$ hdfs dfs -put ./input/* input

# run wordcount
$ hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.4.jar wordcount input output

# print the input files
$ echo -e "\ninput file1.txt:"
$ hdfs dfs -cat input/file1.txt

$ echo -e "\ninput file2.txt:"
$ hdfs dfs -cat input/file2.txt

# print the output of wordcount
$ echo -e "\nwordcount output:"
$ hdfs dfs -cat output/part-r-00000

debug调试时候会出现下面信息:
WARN io.ReadaheadPool: Failed readahead on ifile
EBADF: Bad file descriptor

查阅信息后,说由于在快速读取文件的时候,文件被关闭引起,也可能是其他bug导致,此处忽略。
也可以 mapreduce.ifile.readahead=false 临时禁掉

hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.4.jar wordcount -D mapreduce.ifile.readahead=false input output

当前MR为local模式运行,如果想通过YARN运行则需要配置启动YARN服务

单节点YARN

修改etc/hadoop/mapred-site.xml

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

etc/hadoop/yarn-site.xml

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
</configuration>

启动服务

 $ sbin/start-yarn.sh

可以重新运行上步骤实例

可以查看 RM web地址: http://localhost:8088/

docker配置测试环境

前提已经具有docker环境

将下载
jdk-7u80-linux-x64.tar.gz 放到jdk文件夹
hadoop-2.6.4.tar.gz 压缩包放到 dist文件夹

目录结构:

./
├── Dockerfile
├── dist
│   └── hadoop-2.6.4.tar.gz
└── jdk
    └── jdk-7u80-linux-x64.tar.gz

DockerFile hainiubl/hadoop-node:apache:

FROM ubuntu:latest

MAINTAINER sandy <sandy@hainiubl.com>

#install software
RUN apt-get update
RUN apt-get install -y ssh vim openssh-server
ADD jdk/jdk-7u80-linux-x64.tar.gz /usr/local
RUN ln -s /usr/local/jdk1.7.0_80 /usr/local/jdk && rm -rf /usr/local/jdk-7u80-linux-x64.tar.gz

# install hadoop
ADD dist/hadoop-2.6.4.tar.gz /usr/local/

RUN ln -s /usr/local/hadoop-2.6.4 /usr/local/hadoop

ENV JAVA_HOME=/usr/local/jdk
ENV HADOOP_HOME=/usr/local/hadoop
ENV HADOOP_MAPRED_HOME=$HADOOP_HOME
ENV HADOOP_COMMON_HOME=$HADOOP_HOME
ENV HADOOP_HDFS_HOME=$HADOOP_HOME
ENV HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
ENV YARN_HOME=$HADOOP_HOME
ENV YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
ENV PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

# ssh without key
RUN ssh-keygen -t rsa -f ~/.ssh/id_rsa -P '' && \
    cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

build:

$ docker build -t hainiubl/hadoop-node:apache ./

目录结构:

./
├── Dockerfile
├── config
│   ├── core-site.xml
│   ├── hadoop-env.sh
│   ├── hdfs-site.xml
│   ├── mapred-site.xml
│   ├── run-wordcount.sh
│   └── yarn-site.xml

DockerFile hainiubl/hadoop-pseudo

ROM hainiubl/hadoop-node:apache

MAINTAINER sandy <sandy@hainiubl.com>

ADD config/* /root/
RUN mv /root/core-site.xml $HADOOP_HOME/etc/hadoop/ && mv /root/hadoop-env.sh $HADOOP_HOME/etc/hadoop/

RUN chmod +x ~/run-wordcount.sh && \
    chmod +x $HADOOP_HOME/sbin/start-dfs.sh && \
    chmod +x $HADOOP_HOME/sbin/start-yarn.sh

CMD [ "sh", "-c", "/etc/init.d/ssh start; bash"]

build:

$ docker build -t hainiubl/hadoop-pseudo:apache ./

启动docker节点:

$ docker run -itd -p 50070:50070 -p 8088:8088 --name hadoop-pseudo hainiubl/hadoop-pseudo:apache &

$ docker exec -it hadoop-pseudo sh -c "/usr/local/hadoop/bin/hdfs namenode -format && /usr/local/hadoop/sbin/start-dfs.sh && bash"
版权声明:原创作品,允许转载,转载时务必以超链接的形式表明出处和作者信息。否则将追究法律责任。来自海汼部落-青牛,http://hainiubl.com/topics/5
本帖已被设为精华帖!
回复数量: 1
  • 哈哈哈
    2018-03-03 12:12:36

    。。。。。。。。。。。。。。。

暂无评论~~
  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,可用Emoji的自动补全, 在输入的时候只需要 ":" 就可以自动提示了 :metal: :point_right: 表情列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif,教程
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
Ctrl+Enter