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

CDH版本hadoop2.6伪分布式安装

2018-01-19 11:20 489 查看
CDH版本hadoop的一个重要分支,使用hadoop-2.6.0-cdh5.9.0在单台CentOS配置hadoop伪分布式环境;

1、基础环境配置

主机名IP地址角色Hadoop用户
localhost192.168.30.139NameNode、ResourceManager、SecondaryNameNode、DataNode、NodeManagerhadoop

1.1、关闭防火墙和SELinux

1.1.1、关闭防火墙

$ systemctl stop firewalld
$ systemctl disable firewalld

1.1.2、关闭SELinux

$ setenforce 0
$ sed -i 's/enforcing/disabled/' /etc/sysconfig/selinux

注:以上操作需要使用root用户

1.2、hosts配置

$ vi /etc/hosts

########## Hadoop host ##########
192.168.30.139   localhost

注:以上操作需要使用root用户,通过ping 主机名可以返回对应的IP即可

1.3、配置无密码访问

首先要创建hadoop用户,然后在4台主机上使用hadoop用户配置无密码访问,所有主机的操作相同,以hadoop-master为例

生成私钥和公钥

$ ssh-keygen -t rsa

拷贝公钥到主机(需要输入密码)

$ ssh-copy-id hadoop@hadoop

注:以上操作需要在hadoop用户,通过hadoop用户ssh到其他主机不需要密码即可。

1.4、Java环境配置

1.4.1、下载JDK

注:使用hadoop用户操作

$ cd /home/hadoop
$ curl -o jdk-8u151-linux-x64.tar.gz http://download.oracle.com/otn-pub/java/jdk/8u151-b12/e758a0de34e24606bca991d704f6dcbf/jdk-8u151-linux-x64.tar.gz?AuthParam=1516091623_fa4174d4b1eed73f36aa38230498cd48[/code] 

1.4.2、安装java

安装java可使用hadoop用户操作;

$ mkdir -p /home/hadoop/app/java
$ tar -zxf jdk-8u151-linux-x64.tar.gz
$ mv jdk1.8.0_151 /home/hadoop/app/java/jdk1.8


配置Java环境变量:
$ vi /home/hadoop/.bash_profile


export JAVA_HOME=/home/hadoop/app/java/jdk1.8
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

启用环境变量
$ source /home/hadoop/.bash_profile


注:通过
java –version
命令返回Java的版本信息即可

2、安装hadoop

2.1、下载安装CDH版本的hadoop

$ cd ~
$ curl -O http://archive.cloudera.com/cdh5/cdh/5/hadoop-2.6.0-cdh5.13.0.tar.gz $ mkdir -p app/hadoop
$ tar -zxf hadoop-2.6.0-cdh5.9.0.tar.gz -C ./app/hadoop/

2.2、安装配置hadoop

hadoop的安装配置使用hadoop用户操作;

创建目录,用于存放hadoop数据

$ mkdir -p /home/hadoop/app/hadoop/hdfs/{name,data}

2.2.1、配置core-site.xml

$ vi /home/hadoop/app/hadoop/hadoop-2.6.0-cdh5.9.0/etc/hadoop/core-site.xml

<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/hadoop/app/hadoop/tmp</value>
</property>
</configuration>

2.2.2、配置hdfs-site.xml

$ vi /home/hadoop/app/hadoop/hadoop-2.6.0-cdh5.9.0/etc/hadoop/hdfs-site.xml

<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/hadoop/app/hadoop/hdfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/hadoop/app/hadoop/hdfs/data</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>

2.2.3、配置mapred-site.xml

$ cd /home/hadoop/app/hadoop/hadoop-2.6.0-cdh5.9.0/etc/hadoop/
$ cp mapred-site.xml.template mapred-site.xml

$ vi /home/hadoop/app/hadoop/hadoop-2.6.0-cdh5.9.0/etc/hadoop/mapred-site.xml

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

2.2.4、配置yarn-site.xml

$ vi /home/hadoop/app/hadoop/hadoop-2.6.0-cdh5.9.0/etc/hadoop/yarn-site.xml

<configuration>

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

2.2.5、配置slaves

$ vi app/hadoop/hadoop-2.6.0-cdh5.9.0/etc/hadoop/slaves

localhost

2.2.6、配置hadoop-env

修改hadoop-env.sh文件的JAVA_HOME环境变量,操作如下:
$ vi /home/hadoop/app/hadoop/hadoop-2.6.0-cdh5.9.0/etc/hadoop/hadoop-env.sh


export JAVA_HOME=/home/hadoop/app/java/jdk1.8


2.2.7、配置yarn-env

修改yarn-env.sh文件的JAVA_HOME环境变量,操作如下:

$ vi /home/hadoop/app/hadoop/hadoop-2.6.0-cdh5.9.0/etc/hadoop/hadoop-env.sh

export JAVA_HOME=/home/hadoop/app/java/jdk1.8

2.2.8、配置mapred-env

修改mapred-env.sh文件的JAVA_HOME环境变量,操作如下:

$ vi /home/hadoop/app/hadoop/hadoop-2.6.0-cdh5.9.0/etc/hadoop/hadoop-env.sh

export JAVA_HOME=/home/hadoop/app/java/jdk1.8

2.2.9、配置HADOOP_PREFIX

$ vi /home/hadoop/.bash_profile

####HADOOP_PREFIX
export HADOOP_PREFIX=/home/hadoop/app/hadoop/hadoop-2.6.0-cdh5.9.0
export PATH=$PATH:$HADOOP_PREFIX/bin:$HADOOP_PREFIX/sbin

启用环境变量

$ source /home/hadoop/.bash_profile

注:通过
echo $HADOOP_PREFIX
命令返回hadoop的安装目录

3、启动hadoop伪分布式

3.1、启动hdfs

格式化hdfs

$ hdfs namenode -format


启动dfs

$ start-dfs.sh


启动的进程
$ jps
15376 NameNode
15496 DataNode
15656 SecondaryNameNode
15759 Jps

注:关闭dfs命令为:
stop-dfs.sh


3.2、启动yarn

$ start-yarn.sh

注:关闭yarn命令为:
stop-yarn.sh


3.3、启动集群

hdfs和yarn的启动可以使用一条命令执行:

启动:
start-all.sh


关闭:
stop-all.sh


启动后的所有进程:

$ jps
15376 NameNode
16210 Jps
15811 ResourceManager
15907 NodeManager
15496 DataNode
15656 SecondaryNameNode


MapReducer PI运算
$ hadoop jar /home/hadoop/app/hadoop/hadoop-2.6.0-cdh5.9.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.9.0.jar pi 5 10


返回的结果是:
Estimated value of Pi is 3.28000000000000000000


YARN管理界面:http://192.168.30.139:8088

HDFS管理界面:http://192.168.30.139:50070

4、hdfs的shell操作和Wordcount演示

4.1、简单的hdfs shell操作

创建目录

$ hadoop fs -mkdir /input
$ hadoop fs -mkdir /output


查看目录

$ hadoop fs -ls /
Found 4 items
drwxr-xr-x   - hadoop supergroup          0 2018-01-19 10:56 /input
drwxr-xr-x   - hadoop supergroup          0 2018-01-19 10:56 /output
drwx------   - hadoop supergroup          0 2018-01-19 10:51 /tmp
drwxr-xr-x   - hadoop supergroup          0 2018-01-19 10:51 /user


上传文件

$ hadoop fs -put  /home/hadoop/app/hadoop/hadoop-2.6.0-cdh5.9.0/LICENSE.txt /input


查看文本文件内容
$ hadoop fs -cat /input/LICENSE.txt


4.2、Wordcount

将HDFS上
/input/LICENSE.txt
使用hadoop内置Wordcount的jar包统计文档的Wordcount

启动测试

$ hadoop jar /home/hadoop/app/hadoop/hadoop-2.6.0-cdh5.9.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.9.0.jar wordcount /input /output/wordcounttest


查看结果
$ hadoop fs -ls /output/wordcounttest
Found 2 items
-rw-r--r--   1 hadoop supergroup          0 2018-01-19 11:04 /output/wordcounttest/_SUCCESS
-rw-r--r--   1 hadoop supergroup      22117 2018-01-19 11:04 /output/wordcounttest/part-r-00000
$
$ hadoop fs -cat /output/wordcounttest/part-r-00000|sort -k2 -nr|head
the 641
of  396
or  269
and 255
to  241
this    164
in  162
OR  161
OF  160
a   128


5、遇到的问题

5.1、WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

解决:导致该问题的改版本是因为${HADOOP_PREFIX}/lib/native目录没有lib库,解决办法是到hadoop官网下载2.6的包,把lib/native目录下的数据拷贝过去。

5.2、openssl: false Cannot load libcrypto.so (libcrypto.so: 无法打开共享对象文件: 没有那个文件或目录)!

解决:/usr/lib64/目录下做一个libcrypto.so软连


cd /usr/lib64/
ln -s /usr/lib64/libcrypto.so.1.0.1e libcrypto.so


使用命令
export HADOOP_ROOT_LOGGER=DEBUG,console
可以在终端上看到更详细的日志信息方便排查问题;

以上两个问题可以使用命令检查是否为true:
hadoop checknative


注:
${HADOOP_PREFIX}
表示hadoop的安装目录,或者说是
${HADOOP_HOME}


6、参考资料

http://archive.cloudera.com/cdh5/cdh/5/hadoop-2.6.0-cdh5.7.5/hadoop-project-dist/hadoop-common/SingleCluster.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  CDH 伪分 布式