本人是学生一枚,前段时间参加了省里举办的高校“大数据技术与应用”竞赛。作为一名小白,从搭建环境学起,遇到了各种问题。用到了hadoop、linux、spark、scala、hive、sqoop、hbase、mysql。现把自己整理的过程分享出来。本人分享的都是非常浅显的技术,在本机中运行几次没有问题的成果,命令都是直接可以复制使用,供大家参考。

本教程使用的文件都在我的某度网盘里 大家有需要可以自行下载  pan.baidu.com/s/1i4UdHNR  密码 whpd

来个防和谐的 屁A恩 点 baidu 点 谁喔m/s/1i4UdHNR密码 whpd

本教程对从没接触过linux和hadoop的同学有用,大神请忽视。有些出错的问题是直接网上找到的解决办法,大家自己选择判断。

开发环境:win10 

VMware Workstation Pro12 

ubuntu16.04 、centos 6.5、centos7   (以下$ 后面跟着的命令即为终端输入的命令 复制时去掉$)


1、本人使用vm创建的虚拟机,建议大家安装完linux系统以后,先装上vmware tool,vmware tool安装完成后要重启一下虚拟机,这样就可以把win10(原系统)里面的文件或文字直接复制粘贴到linux中了。


1.1、首先在安装的虚拟机上面点击右键 

centos7安装系统只有光标_hadoop

我这里已经安装完成,未安装时显示的是更新 vmware tools ,点击后会在你虚拟机桌面上显示一个cd盘,打开就是安装文件,或者在文件管理器左边同样打开即是安装文件。

centos7安装系统只有光标_伪分布式_02

在这里说明一下,linux的压缩包是***.tar.gz 结尾的,不是Windows的zip或者rar。


1.2、本人linux系统中的用户名是hadoop,linux中home文件夹下的hadoop文件夹是用户直接可以操作的,删除、修改、从Windows里面拖拽文件到hadoop文件夹。其他文件夹是在 \ 目录下的,有时用户不能直接操作,因此安装文件一般都需要把文件放到home/hadoop 中 再安装到其他文件夹。图中打开home文件夹里面就有个hadoop文件夹,这里就不截图展示了,不懂的同学自行百度下linux的文件目录结构就明白了。

centos7安装系统只有光标_centos7安装系统只有光标_03


1.3 、将vmware tools.tar.gz 复制到hadoop文件夹下。在桌面空白处点击右键---打开终端。输入以下命令:

-----------------------------------------------------------------------------------------

$ cd /home/hadoop  
//先进入hadoop目录
$ sudo tar -zxvf VMwareTools-9.9.3-2759765.tar.gz -C /usr/local
//将vmtools解压到 usr/local目录中大家也可以解压到opt、var等但是一般书本都解压到local咱们按惯例吧·
$ cd /usr/local
//进入local目录
$ ls
//ls是列出文件夹中的所有文件、文件夹,当然也可以用鼠标进目录管理器进行查看。
$ cd vmware-tools-distrib
// 我这里解压完成后是这个vmware-tools-distrib名字
//这里说个小技巧 假如文件夹里只有某个名字 输入如vm 然后按tab键系统会自动补全后面的名字vmware-tools-distrib
$ sudo vmware-install.pl
// vmware-tools-distrib 文件夹下有个vmware-install.pl 安装即可 安装过程中会有yes或no 一路enter yes就可以
成功后会提示enjoy vm····  重启reboot后就可以使用vm tools
----------------------------------------------------------------------------------------------------
2、准备工作 关闭防火墙 实现ssh免密码登陆

2.1、在CentOS 6.x中,可以通过如下命令关闭防火墙:
$ sudo service iptables stop   # 关闭防火墙服务
$ sudo chkconfig iptables off  # 禁止防火墙开机自启,就不用手动关闭了
centos7.0
直接关闭防火墙
$ systemctl stop firewalld.service        #停止firewall
$ systemctl disable firewalld.service   #禁止firewall开机启动
ubuntu中默认关闭了防火墙
$ sudo ufw status     #查看防火墙状态
 
$ sudo ufw disable    #关闭防火墙
 

2.2、一般情况下,CentOS 默认已安装了 SSH client、SSH server,打开终端执行如下命令进行检验:
$ rpm -qa | grepssh
 如果返回的结果包含了 SSH client 跟 SSH server,则不需要再安装。
 若需要安装,则可以通过 yum 进行安装(安装过程中会让你输入 [y/N],输入 y 即可):
$ sudo yum install openssh-clients                在ubuntu中 使用这个命令安装 :sudo apt-get install ssh
$ sudo yum install openssh-server
 接着执行如下命令测试一下 SSH是否可用:
$ ssh localhost
 此时会有如下提示(SSH首次登陆提示),输入 yes 。然后按提示输入密码000000(我这里是六个0),这样就登陆到本机了。
 但这样登陆是需要每次输入密码的,我们需要配置成SSH无密码登陆。
 首先输入 exit 退出刚才的 ssh,就回到了我们原先的终端窗口,然后利用 ssh-keygen 生成密钥,并将密钥加入到授权中:
$ exit                           # 退出刚才的 ssh localhost
$ cd ~/.ssh/                     # 若没有该目录,请先执行一次ssh localhost
$ ssh-keygen -trsa              # 会有提示,都按回车就可以
$ cat id_rsa.pub >> authorized_keys  # 加入授权
$ chmod 600 ./authorized_keys    # 修改文件权限
 此时再用 ssh localhost 命令,无需输入密码就可以直接登陆了。

3、安装java hadoop是在java基础上运行的 
 大家自行去java官网下载linux 使用的jdk 这里我直接上命令 (jdk安装包存到home/hadoop文件夹里)
$ cd /home/hadoop

$ sudo tar -zxvf jdk-7u91-linux-x64.tar.gz -C /usr/local               #解压到/usr/local目录下
$ cd /usr/local 
$ ls                                      #查看解压后的名字
$ sudo mv jdk***** jdk          # 将文件夹名改为jdk   mv 原名 新名

 #接着需要配置一下JAVA_HOME 环境变量,为方便,我们在 ~/.bashrc 中进行设置
$ vim ~/.bashrc
 #vim编辑器使用方法: 按键盘字母 i 进行插入编辑 完成后按键盘Esc 会发现编辑光标没有了 这时候键盘按 shift+:键 会出现一个冒号
 #输入 wq 是保存退出 /输入 q 是直接退出 /输入 !q  是强制退出
 #输入 i 直接复制下面代码
export JAVA_HOME=/usr/local/jdk     
export PATH=${JAVA_HOME}/bin:$PATH
export JRE_HOME=${JAVA_HOME}/jre                     #可以没有
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib  #可以没有
#输入:wq 退出
source ~/.bashrc  # 务必要保存 java环境才能配置生效
#在终端里输入 
$ java -version

centos7安装系统只有光标_hadoop_04


显示版本了 即为配置成功



4、安装hadoop 配置环境变量




4.1、Hadoop 2 可以通过 http://mirror.bit.edu.cn/apache/hadoop/common/ 或者http://mirrors.cnnic.cn/apache/hadoop/common/ 下载


大家自行去官网下载hadoop 这里我直接上命令 (hadoop安装包存到home/hadoop文件夹里)
$ cd /home/hadoop
$ sudo cp -r hadoop-2.6.5.tar.gz -C /usr/local
$ cd /usr/local
$ sudo mv hadoop-2.6.5 hadoop           # 将文件夹名改为hadoop
$ sudo chown -R hadoop:hadoop hadoop       # 修改文件权限  
#这是上面句子的解释 递归修改文件夹my及包含的所有子文件(夹)的所属用户(jay)和用户组(fefjay):
$ chown -R jay:fefjay my #修改文件所属用户为jay,所属用户组为fefjay 
#我这里是hadoop用户 hadoop用户组 
$ vim ~/.bashrc 
#复制粘贴
export HADOOP_HOME=/usr/local/hadoop                
#改成自己安装后文件夹的名字 我之前已经改为hadoop
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
 
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
 export PATH=$HADOOP_HOME/bin:$PATH
 export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
 
$ source ~/.bashrc  #保存

 #在这里  终端中输入以下命令 就能看到hadoop的版本了 
 
$ cd/usr/local/hadoop
$ ./bin/hadoop version  
4.2、#Hadoop 可以在单节点上以伪分布式的方式运行,Hadoop 进程以分离的 Java 进程来运行,节点既作为 NameNode 也作为 #DataNode,同时,读取的是 HDFS 中的文件。Hadoop 的配置文件位于 /usr/local/hadoop/etc/hadoop/ 中,伪分布式需要修改2个#配置文件 core-site.xml 和 hdfs-site.xml
$ cd /usr/local/hadoop/etc/hadoop          #进入目录 修改core-site.xml 和 hdfs-site.xml 
ls    #看到相关文件
$ vim core-site.xml
#将当中的         <configuration></configuration> (这两个在文件的最后两行)              修改为下面配置:
 ----------------------------------------------------------------------------复制粘贴即可
<configuration>
<property>
<!-- 指定hadoop运行时产生文件的存储路径 -->
        <name>hadoop.tmp.dir</name>
       <value>file:/usr/local/hadoop/tmp</value>
        <description>A base for othertemporary directories.</description>
    </property>
<property>
<!-- namenode的通信地址 -->
        <name>fs.defaultFS</name>
       <value>hdfs://localhost:9000</value>
    </property>
</configuration>
 
-----------------------------------------------------------------------------      : wq 退出 
#同样的,修改配置文件 hdfs-site.xml:
$ vim hsfs-site.xml
-------------------------------------------------------------复制粘贴
<configuration>
<property>
<!-- 设置hdfs副本数量 -->
       <name>dfs.replication</name>
       <value>1</value>
    </property>
<property>
<!-- namenode 存放 name table 的目录 -->
       <name>dfs.namenode.name.dir</name>
       <value>file:/usr/local/hadoop/tmp/dfs/name</value>
    </property>
<property>
<!-- datanode 存放数据 block 的目录 -->
        <name>dfs.datanode.data.dir</name>
       <value>file:/usr/local/hadoop/tmp/dfs/data</value>
    </property>
</configuration>
 
-----------------------------------------------------------------          :wq 
#使用终端 输入 下面  
$ cd    #回到根目录
$ hdfsnamenode -format           #输入这个

成功的话,会看到 "successfully formatted" 和"Exitting with status 0"的提示 若为 "Exitting with status1" 则是出错。

回去检查防火墙 、ssh 和 core-site.xml 和 hdfs-site.xml是否输入对。



centos7安装系统只有光标_大数据_05


#如果在这一步时提示 Error: JAVA_HOME is not set and could not be found. 的错误,则说明之前设置 JAVA_HOME 环境变量那边就没设置好,请按教程先设置好 JAVA_HOME 变量,否则后面的过程都是进行不下去的。如果已经按照前面教程在.bashrc文件中设置了JAVA_HOME,还是出现 Error: JAVA_HOME is not set and could not be found. 的错误,那么,请到hadoop的安装目录修改配置文件“/usr/local/hadoop/etc/hadoop/hadoop-env.sh”,在里面找到“export JAVA_HOME=${JAVA_HOME}”这行,然后,把它修改成JAVA安装路径的具体地址,比如,“export JAVA_HOME=/usr/local/jdk”,然后,再次启动Hadoop。

#接着开启 NameNode 和 DataNode 守护进程。 终端输入

$ ./sbin/start-dfs.sh                                     #start-dfs.sh 是个完整的可执行文件,中间没有空格


#若出现如下SSH提示,输入yes即可。


centos7安装系统只有光标_伪分布式_06

启动时可能会出现如下 WARN 提示:WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable WARN 提示可以忽略,并不会影响正常使用。

启动完成后,可以通过命令 jps 来判断是否成功启动,若成功启动则会列出如下进程: "NameNode"、"DataNode" 和 "SecondaryNameNode"(如果 SecondaryNameNode 没有启动,请运行 sbin/stop-dfs.sh 关闭进程,然后再次尝试启动尝试)。如果没有 NameNode 或 DataNode ,那就是配置不成功,请仔细检查之前步骤,或通过查看启动日志排查原因。

centos7安装系统只有光标_大数据_07

此外,若是 DataNode 没有启动,可尝试如下的方法(注意这会删除 HDFS 中原有的所有数据,如果原有的数据很重要请不要这样做):

# 针对 DataNode 没法启动的解决方法
$ ./sbin/stop-dfs.sh                                         # 关闭
$ rm-r ./tmp                                                   # 删除 tmp 文件,注意这会删除 HDFS 中原有的所有数据
$ ./bin/hdfs namenode -format                     # 重新格式化 NameNode
$ ./sbin/start-dfs.sh                                       # 重启
#成功启动后,可以访问 Web 界面 http://localhost:50070 查看 NameNode 和 Datanode 信息,还可以在线查看 HDFS 中的文件。

#下次启动 hadoop 时,无需进行 NameNode 的初始化,只需要运行 ./sbin/start-dfs.sh 就可以!我个人比较喜欢

直接终端输入 start-all.sh

4.3、启动Yarn             先关闭hadoop    ./sbin/stop-dfs.sh  或者 stop-all.sh

(伪分布式不启动 YARN 也可以,一般不会影响程序执行)
YARN 是从 MapReduce 中分离出来的,负责资源管理与任务调度。YARN 运行于 MapReduce 之上,提供了高可用性、高扩展性,YARN 的更多介绍在此不展开,有兴趣的可查阅相关资料。上述通过./sbin/start-dfs.sh 启动 Hadoop,仅仅是启动了 MapReduce 环境,我们可以启动 YARN ,让 YARN 来负责资源管理与任务调度。
下面直接上命令
$ cd /usr/local/hadoop/etc/hadoop          #进入目录
$ ls                                                                #可以看到相关文件
#首先修改配置文件mapred-site.xml,源文件是mapred-site.xml.template 这边需要先进行重命名:
$ mv mapred-site.xml.template mapred-site.xml
 
#然后再进行编辑
 
$ vim mapred-site.xml
----------------------------------- ------------复制粘贴
<configuration>
<property>
<!-- 通知框架MR使用YARN -->
       <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>
 
-------------------------------------------  :wq 保存 
#接着修改配置文件yarn-site.xml:
$ vim yarn-site.xml
----------------------------------------------复制粘贴
<configuration>
<!-- reducer取数据的方式是mapreduce_shuffle -->
    <property>
       <name>yarn.nodemanager.aux-services</name>
       <value>mapreduce_shuffle</value>
        </property>
</configuration>
------------------------------------------ :wq保存
# 然后就可以启动 YARN 了(需要先执行过 ./sbin/start-dfs.sh)或者配置好直接start-all.sh 下面start-yarn.sh 也省略了
$ ./sbin/start-yarn.sh      #启动YARN

  


#开启后通过 jps 查看,可以看到多了 NodeManager 和 ResourceManager 两个后台进程






注意:按上面的命令直接敲是完全可以的,假如出错了我上面有一些出错的例子,其他错误百度一下也能解决。注意看终端中提示的error 那一行 。

1、假如你创建的是A用户 不想用A来配环境 直接再创建一个用户即可。下面是步骤

1.1、ubuntu中创建hadoop用户
sudo useradd –m hadoop –s /bin/bash   #终端中输入这个命令
#上面这条命令创建了可以登陆的 hadoop用户,并使用 /bin/bash 作为 shell
#接着使用如下命令设置密码,可简单设置为 123456,按提示输入两次密码:
$ sudo passwd hadoop
#可为 hadoop 用户增加管理员权限  这一步强烈建议做
$ sudo adduser hadoop sudo
 
#注销后登陆就看到新用户hadoop了 
 

1.2 centos中创建hadoop用户

$ sudo useradd –m hadoop –s /bin/bash   #终端中输入这个命令
#上面这条命令创建了可以登陆的 hadoop用户,并使用 /bin/bash 作为 shell
#接着使用如下命令设置密码,可简单设置为 123456,按提示输入两次密码:
$ sudo passwd hadoop
#可为 hadoop 用户增加管理员权限 这一步强烈建议做
 
$ vim  
/etc/sudoers           #终端中输入这个 与ubuntu不一样 
 
#找到文件里面有下面一行 root  ALL```````
#   root  ALL=(ALL)    ALL       #在这一行下面添加 
hadoop ALL=(ALL)    ALL    # hadoop是新增的用户
# :wq 保存退出
#注销后登陆就看到新用户hadoop了
建议登陆后使用在终端中输入 su 输入密码进入root用户进行以上所有java hadoop操作