Hadoop的安装与配置
一、下载JDK并配置apt-get install openjdk-8-jdk#查找软件包apt-cache search jdkexport JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64export PATH=$PATH:/usr/lib/jvm/java-8-openjdk-amd64/bin二、下载HADOOP#htt...
一、下载JDK并配置
apt-get install openjdk-8-jdk
#查找软件包
apt-cache search jdk
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$PATH:/usr/lib/jvm/java-8-openjdk-amd64/bin
二、下载HADOOP
#http://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common
wget http://www.trieuvan.com/apache/hadoop/common/hadoop-2.7.6/hadoop-2.7.6.tar.gz
三、解压并放入本地目录
tar -xzvf hadoop-2.7.6.tar.gz -C /usr/local
cd /usr/local
mv hadoop-2.7.6 hadoop
cd /usr/local/hadoop/bin
./hadoop version
四、配置环境变量
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
hadoop fs -ls /
五、修改配置文件
cd /usr/local/hadoop/etc/hadoop
1、core-site.xml
vi core-site.xml
配置主节点,指定namenode的地址
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
或
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
<!--用来指定使用hadoop时产生文件的存放目录-->
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/hadoop/tmp</value>
</property>
</configuration>
2、hdfs-site.xml
vi hdfs-site.xml
指定hdfs保存数据的副本数量,如果dir属性使用相对路径或者不加的话,hadoop在hdfs namenode -format
时会报错FATAL namenode.NameNode: Exception in namenode join java.lang.IllegalArgumentException: URI has an authority component
注意,此处的dfs.namenode.name.dir
和dfs.datanode.data.dir
位置需要不一样,不能是一个文件夹,之前设置成一个文件夹报错ERROR org.apache.hadoop.hdfs.server.common.Storage: It appears that another node 1003@iZ2zeh8q22e14pvqr3bu01Z has already locked the storage directory: /usr/hadoop/data/dfs/name
原因是当namenode启动后,锁定了文件夹,导致datanode无法启动
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/hadoop/data/dfs/namenode</value>(即使用完整的绝对地址)
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/hadoop/data/dfs/datanode</value>(即使用完整的绝对地址)
</property>
</configuration>
#如果配置了hduser的用户的话
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<!--指定hdfs中namenode的存储位置-->
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/hduser/mydata/hdfs/namenode</value>
</property>
<!--指定hdfs中datanode的存储位置-->
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/hduser/mydata/hdfs/datanode</value>
</property>
</configuration>
3、mapred-site.xml
mv mapred-site.xml.template mapred-site.xml
vi mapred-site.xml
告诉hadoop以后MR(Map/Reduce)运行在YARN上,如果不指定为YARN,则MR会变为单机版程序,不会进去集群执行。
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
4、yarn-site.xml
vi yarn-site.xml
<configuration>
<!--nomenodeManager获取数据的方式是shuffle-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!--指定Yarn的老大(ResourceManager)的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>locahost</value>
</property>
<!--Yarn打印工作日志-->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<configuration>
第一次启动hadoop服务之前,必须执行格式化namenode
hdfs namenode -format
cd /usr/local/hadoop/etc/hadoop
5、hadoop-env.sh
vim hadoop-env.sh
修改文件,不修改hadoop-env.sh在启动hadoop时报错
localhost: Error: JAVA_HOME is not set and could not be found.`
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/
export HADOOP_COMMON_LIB_NATIVE_DIR=/usr/local/hadoop/lib/native/
export HADOOP_OPTS=$HADOOP_OPTS -Djava.library.path=/usr/local/hadoop/lib/
六、生成SSH秘钥
此处是为了防止在start-all时频繁输入密码,如果是多机器的话,同理
cd ~/.ssh
ssh-keygen -t rsa
cat id_rsa.pub >> authorized_keys
七、启动HADOOP
cd /usr/local/hadoop/sbin
start-all.sh
八、例子
cd ~
mkdir input
cd imput
echo helloworld > file1.txt
echo hellohadoop > file2.txt
echo hellomapreduce > file2.txt
cd /usr/local/hadoop/share/hadoop/mapreduce/
hadoop jar hadoop-mapreduce-examples-2.7.3.jar wordcount /wc_input/* /wc_output
九、常用命令
#在hadoop指定目录内创建新目录
hadoop fs -mkdir /wc_input
#hadoop查看文件列表
hadoop fs -lsr /
#将本地文件file*存储至hadoop
hadoop fs –put file* /wc_input
#打开某个已存在文件
hadoop dfs –cat [file_path]
#将hadoop上某个文件down至本地已有目录下
hadoop fs -get [文件目录] [本地目录]
#删除hadoop上指定文件
hadoop fs –rm [文件地址]
#将hadoop上某个文件重命名
hadoop fs –mv /user/test.txt /user/ok.txt (将test.txt重命名为ok.txt)
#将hadoop指定目录下所有内容保存为一个文件,同时down至本地
hadoop dfs –getmerge /user /home/t
十、在windows配置hadoop常见报错
问题一:
Error: JAVA_HOME is incorrectly set.
Please update F:\hadoop\conf\hadoop-env.cmd
解决方案
C:\Program Files\Java\jdk1.8.0_91 修改为 C:\PROGRA~1\Java\jdk1.8.0_91
#PROGRA~1 ===== C:\Program Files 目录的dos文件名模式下的缩写
#长于8个字符的文件名和文件夹名,都被简化成前面6个有效字符,后面~1,有重名的就 ~2,~3,
问题二:
Could not locate Hadoop executable: E:\lib\hadoop-2.8.0\bin\winutils.exe -see https://wiki.apache.org/hadoop/WindowsProblems
解决方案
在https://github.com/steveloughran/winutils 下下载对应hadoop版本win环境运行文件,覆盖bin文件夹
更多推荐
所有评论(0)